Spark - 地图转换

时间:2017-05-20 09:41:42

标签: java scala apache-spark

为什么Map转换将单行作为单个元素?

如果我从外部数据集(如文本文件)创建RDD,它会将单行作为单个元素吗?

有没有办法改变它,以便它匹配模式而不是默认的单行?

我应该使用像过滤器这样的其他转换吗?

如果我应该使用其他转换,为什么我们不能在Map中进行转换?

请帮帮我。

示例:

我的文件包含

  

映射是应用的Apache Spark中的转换操作   到RDD的每个元素,它将结果作为新的RDD返回。在里面   Map操作开发人员可以定义自己的自定义业务逻辑;该   相同的逻辑将应用于RDD的所有元素。地图功能   根据自定义代码将一个元素作为输入处理它   (由开发人员指定)并一次返回一个元素。地图   将长度为N的RDD转换为另一个长度为N的RDD。输入   和输出RDD通常具有相同数量的记录。

然后映射过程

元素一为[A map是Apache Spark中的转换操作,应用于RDD的每个元素]

是否有任何关于map的方法,以便我可以[在Apache Spark中进行转换操作,它应用于RDD的每个元素,并将结果作为新RDD返回。]作为单行。 [点模式匹配]

1 个答案:

答案 0 :(得分:2)

回答你的第一个问题:
它不是map函数一次single linemap函数只是transforming RDD(弹性分布式数据集)到其他RDD形式。它是逐行读取文本文件的sparkContextsqlContextSource库。

contexts中的每一个都使用TextInputFormat最初使用的Hadoop类。并且TextInputFormatparses输入文件逐行使用(\r or \n)分隔符,逐行读取文本文件。

现在
如果您想要通过foolstop.)分隔,在问题中提到自定义阅读格式来阅读行,那么您必须编写自定义inputFormat类并告知contexts使用您的custom inputFormat类。

我希望答案很明确
被修改
Ingesting data with Spark using a custom Hadoop FileInputFormatCustom Input Format in Hadoop以及simple image format converterUsing Custom Hadoop input format for processing binary file in Spark应该为您提供自定义inputFormat

的良好开端