当Spark使用Hadoop编写器编写part-file(使用saveAsTextFile(((时,这是它保存文件的通用格式"part-NNNNN"。如何在运行时在 Spark 中检索此后缀"NNNNN"?
附言。我不想列出文件然后检索后缀。
这些文件被命名为 part-00000
、 part-00001
等。每个RDD
分区都写入一个part-
文件。因此,输出文件的数量将取决于要写出的RDD
中的分区。
您可以检查正在写入的RDD的分区数(例如5(,然后访问part-00000
到part-00004
的文件。
插图
通过查询 Hive 表生成数据帧
scala> val df1=sqlContext.sql("select * from default.hive_table");
获取 RDD 分区数
scala> df1.rdd.partitions.size
res4: Int = 11
将数据帧保存到 HDFS
scala> df1.rdd.saveAsTextFile("/process_output")
检查 HDFS 输出位置
hadoop fs -ls /process_output
Found 12 items
-rw-r--r-- 3 root hdfs 0 2018-05-01 08:51 /process_output/_SUCCESS
-rw-r--r-- 3 root hdfs 190 2018-05-01 08:51 /process_output/part-00000
-rw-r--r-- 3 root hdfs 190 2018-05-01 08:51 /process_output/part-00001
-rw-r--r-- 3 root hdfs 182 2018-05-01 08:51 /process_output/part-00002
-rw-r--r-- 3 root hdfs 190 2018-05-01 08:51 /process_output/part-00003
-rw-r--r-- 3 root hdfs 180 2018-05-01 08:51 /process_output/part-00004
-rw-r--r-- 3 root hdfs 190 2018-05-01 08:51 /process_output/part-00005
-rw-r--r-- 3 root hdfs 190 2018-05-01 08:51 /process_output/part-00006
-rw-r--r-- 3 root hdfs 190 2018-05-01 08:51 /process_output/part-00007
-rw-r--r-- 3 root hdfs 190 2018-05-01 08:51 /process_output/part-00008
-rw-r--r-- 3 root hdfs 190 2018-05-01 08:51 /process_output/part-00009
-rw-r--r-- 3 root hdfs 190 2018-05-01 08:51 /process_output/part-00010