我有1000个csv文件,可以使用spark中提供的map函数并行处理。我在群集中连接了两个桌面,我正在使用pyspark shell进行计算。我将csv文件的名称传递给map函数,该函数根据名称访问文件。但是,我需要将文件复制到从属设备以使进程正常运行。这意味着必须有另一个系统上所有csv文件的副本。请建议备用存储,同时避免数据传输延迟。
我还尝试将这些文件存储到三维数组中,并使用parallelize命令生成RDD。但这会导致内存不足错误。
答案 0 :(得分:1)
您可以使用spark-csv加载文件 https://github.com/databricks/spark-csv
然后您可以使用dataframe概念来预处理文件。 由于它有1000个csv文件,如果它们之间有一些链接,请使用spark-sql对它们运行操作,然后提取输出以进行最终计算。
如果这不起作用,您可以尝试在HBase或Hive中加载相同的内容然后使用spark来计算,我在单节点集群中检查了100 gb的csv内容。 这可能会有所帮助