为什么Map转换将单行作为单个元素?
如果我从外部数据集(如文本文件)创建RDD,它会将单行作为单个元素吗?
有没有办法改变它,以便它匹配模式而不是默认的单行?
或
我应该使用像过滤器这样的其他转换吗?
如果我应该使用其他转换,为什么我们不能在Map中进行转换?
请帮帮我。
示例:
我的文件包含
映射是应用的Apache Spark中的转换操作 到RDD的每个元素,它将结果作为新的RDD返回。在里面 Map操作开发人员可以定义自己的自定义业务逻辑;该 相同的逻辑将应用于RDD的所有元素。地图功能 根据自定义代码将一个元素作为输入处理它 (由开发人员指定)并一次返回一个元素。地图 将长度为N的RDD转换为另一个长度为N的RDD。输入 和输出RDD通常具有相同数量的记录。
然后映射过程
元素一为[A map是Apache Spark中的转换操作,应用于RDD的每个元素]
是否有任何关于map的方法,以便我可以[在Apache Spark中进行转换操作,它应用于RDD的每个元素,并将结果作为新RDD返回。]作为单行。 [点模式匹配]
答案 0 :(得分:2)
回答你的第一个问题:
它不是map
函数一次single line
。 map
函数只是transforming
RDD
(弹性分布式数据集)到其他RDD
形式。它是逐行读取文本文件的sparkContext
或sqlContext
或Source
库。
contexts
中的每一个都使用TextInputFormat
最初使用的Hadoop
类。并且TextInputFormat
类parses
输入文件逐行使用(\r or \n
)分隔符,逐行读取文本文件。
现在
如果您想要通过foolstop
(.
)分隔,在问题中提到自定义阅读格式来阅读行,那么您必须编写自定义inputFormat
类并告知contexts
使用您的custom inputFormat
类。
我希望答案很明确
的被修改强>
Ingesting data with Spark using a custom Hadoop FileInputFormat和Custom Input Format in Hadoop以及simple image format converter和Using Custom Hadoop input format for processing binary file in Spark应该为您提供自定义inputFormat