情況如何? 我有一萬個CSV文件(每個250kb - 270kb),我想用Spark(Pyspark精確地)處理。每個CSV文件都代表一個特定事件的過程數據。你可以說一個CSV文件代表一個對象。由於我想將數據存儲在HDFS上,所以我必須找到連接數據的方式(因爲在HDFS上存儲大量微小數據效率不高)。如何在Hadoop HDFS上存儲數千個CSV文件
一個CSV文件的片段(簡化)。
Time Module v1 v2 v3 v4 v5 v6 v7 v8
00:00:00 Start 0 26,2 26,0 0 0 25,899 25,7 0
00:00:06 2: M1 0 26,1 26,2 0 0 25,8 25,899 0
00:01:06 2: M1 0 26,6 26,6 0 0 26,8 26,799 0
00:02:05 2: M1 0 27,1 27,0 0 0 27,7 27,7 0
00:03:06 2: M1 0 27,3 27,5 0 0 28,1 28,1 0
完整的數據有45-50列,約1000行。
到目前爲止我的想法。 我想將每個CSV到一個JSON對象,然後串聯的JSON對象所看到如下
{
"Event": "MLV14092",
"Values": [
{
"Time": "00:00:00",
"Module": "Start",
"v1": "33.299"
...
},
{
"Time": "00:00:06",
"Module": "2: M1",
"v1": "33.4"
...
}
]
}
問題。這是一種有效的方法嗎?我對Hadoop環境相對比較陌生,並且已經使用JSON文件完成了一些教程。但是在那些教程中,我總是能夠將一個JSON對象存儲在一行中,因此我不必擔心HDFS會將文件分割成多少行。有一個JSON對象非常「大」,它不適合一條線。 有沒有更好的方法可以繼續?
感謝您的回答!由於數據將被拆分並分佈在節點上,因此我沒有考慮將csv作爲選項,因此節點A可能具有部分事件A,而節點B具有事件A的其餘部分。但實際上不是問題,我會盡力實現你的想法。 – Rob
有關在節點之間分割的特定事件的數據:通常對於您所描述的情況,這不會是一個問題;每個Event name/id的記錄/觀察數據量很低。您可能會對每組記錄執行一些通用分析,並按事件名稱/編號進行分組 - 在執行分組操作時,它將對同一個節點名稱/編號對應的所有數據進行混洗並放置。 –