【发布时间】:2018-03-31 05:29:22
【问题描述】:
情况如何? 我有一万个 CSV 文件(每个 250kb - 270kb),我想使用 Spark(准确地说是 Pyspark)处理它们。每个 CSV 文件代表一个特定事件的过程数据。您可以说一个 CSV 文件代表一个对象。由于我想将数据存储在 HDFS 上,我必须找到一种连接数据的方法(因为在 HDFS 上存储大量微小数据效率低下)。
一个 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 对象如此“大”,它不会放在一行中。 有更好的方法吗?
【问题讨论】:
标签: json csv hadoop pyspark hdfs