我正在尝试处理每天都在不断增长的4个文本文件目录.我需要做的是,如果有人试图搜索发票号,我应该给他们提供它的文件列表.
通过将它们加载为RDD,我能够映射和减少文本文件中的值.但是,如何获取文件名和其他文件属性?
zer*_*323 28
从Spark 1.6开始,您可以将text数据源和input_file_name功能组合如下:
斯卡拉:
import org.apache.spark.sql.functions.input_file_name
val inputPath: String = ???
spark.read.text(inputPath)
.select(input_file_name, $"value")
.as[(String, String)] // Optionally convert to Dataset
.rdd // or RDD
Run Code Online (Sandbox Code Playgroud)
Python:
(2.x之前的版本有错误,转换为RDD时可能无法保留名称):
from pyspark.sql.functions import input_file_name
(spark.read.text(input_path)
.select(input_file_name(), "value"))
.rdd)
Run Code Online (Sandbox Code Playgroud)
这也可以与其他输入格式一起使用.
小智 5
如果你在 pyspark 中,你可以试试这个:
test = sc.wholeTextFiles("pathtofile")
Run Code Online (Sandbox Code Playgroud)
你会得到一个结果 RDD,第一个元素 = 文件路径,第二个元素 = 内容
| 归档时间: |
|
| 查看次数: |
21386 次 |
| 最近记录: |