Cdr*_*Cdr 17 hive apache-spark pyspark
我正在使用 SPARK 读取 hdfs 中的文件。有一种情况,我们从遗留系统中以 csv 格式获取文件作为块。
ID1_FILENAMEA_1.csv
ID1_FILENAMEA_2.csv
ID1_FILENAMEA_3.csv
ID1_FILENAMEA_4.csv
ID2_FILENAMEA_1.csv
ID2_FILENAMEA_2.csv
ID2_FILENAMEA_3.csv
Run Code Online (Sandbox Code Playgroud)
该文件使用 HiveWareHouse Connector 加载到 HIVE 中的 FILENAMEA,几乎不需要添加默认值等转换。同样,我们有大约 70 张桌子。Hive 表以 ORC 格式创建。表根据 ID 进行分区。现在,我正在一一处理所有这些文件。这需要很多时间。
我想让这个过程更快。文件将以 GB 为单位。
有没有办法同时读取所有 FILENAMEA 文件并将其加载到 HIVE 表中。
Vin*_*oba 24
您有两种方法可以在 pyspark 中读取多个 CSV 文件。如果所有 CSV 文件都位于同一目录中并且都具有相同的架构,则可以通过直接传递目录路径作为参数来立即读取,如下所示:
spark.read.csv('hdfs://path/to/directory')
Run Code Online (Sandbox Code Playgroud)
如果 CSV 文件位于不同位置或 CSV 文件位于同一目录但其中包含其他 CSV/文本文件,则可以将它们作为表示.csv()方法参数中的路径列表的字符串传递,如下所示:
spark.read.csv('hdfs://path/to/filename1,hdfs://path/to/filename2')
Run Code Online (Sandbox Code Playgroud)
您可以在此处了解有关如何使用 Spark 读取 CSV 文件的更多信息
如果您需要从 HDFS 目录中的文件列表构建此路径列表,您可以查看此答案,创建路径列表后,您可以将其转换为字符串以传递给.csv()方法','.join(your_file_list)
| 归档时间: |
|
| 查看次数: |
41102 次 |
| 最近记录: |