Spark - 地图转换
Posted
技术标签:
【中文标题】Spark - 地图转换【英文标题】:Spark - Map transformation 【发布时间】:2017-05-20 09:41:42 【问题描述】:Map转换为什么将单行作为单个元素?
如果我从文本文件等外部数据集创建 RDD,它将单行作为单个元素?
有什么办法可以改变它,让它匹配一个模式而不是默认的单行?
或
我应该使用过滤器之类的其他转换吗?
如果我应该使用其他转换,为什么我们不能在 Map 中进行?
请帮帮我。
示例:
我的文件包含
映射是 Apache Spark 中应用的转换操作 到RDD的每个元素,并将结果作为新的RDD返回。在里面 地图操作开发者可以定义自己的自定义业务逻辑;这 相同的逻辑将应用于 RDD 的所有元素。地图功能 根据自定义代码将一个元素作为输入处理它 (由开发人员指定)并一次返回一个元素。地图 将一个长度为 N 的 RDD 转换为另一个长度为 N 的 RDD。输入 并且输出 RDD 通常具有相同数量的记录。
然后映射过程
第一个元素作为 [A map 是 Apache Spark 中的一种转换操作,应用于 RDD 的每个元素]
map 有什么方法可以让我将 [A map is a transformation operation in Apache Spark 应用于 RDD 的每个元素,并将结果作为新的 RDD 返回。] 作为单行。 [点阵模式匹配]
【问题讨论】:
【参考方案1】:回答您的第一个问题:
不是map
函数一次占用single line
。 map
函数只是 transforming
RDD
(弹性分布式数据集)到其他 RDD
形式。它的sparkContext
或sqlContext
或Source
库逐行读取文本文件。
每个contexts
都在使用TextInputFormat
最初使用的Hadoop
类。而 TextInputFormat
类 parses
使用 (\r or \n
) 分隔符逐行读取输入文件,逐行读取文本文件。
现在
如果您想要自定义阅读格式,正如您在问题中提到的那样通过foolstop
(.
) 分隔来读取行,那么您将必须编写自定义inputFormat
类并告诉contexts
使用您的@ 987654344@班级。
我希望答案是明确的
已编辑
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
【讨论】:
谢谢。这说得通。如果您添加一些链接以参考更多内容,那将非常有帮助 @GopsAB,我更新了一些链接以便快速启动。以上是关于Spark - 地图转换的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中的 Spark Dataframe 上应用任何类型的地图转换
使用 Scala 将多列转换为 Spark Dataframe 上的一列地图
如何将地图 List<Map<String, String>> myList 列表转换为 Java 中的 Spark Dataframe?