在 spark 中设置 textinputformat.record.delimiter
Posted
技术标签:
【中文标题】在 spark 中设置 textinputformat.record.delimiter【英文标题】:Setting textinputformat.record.delimiter in spark 【发布时间】:2013-07-15 14:19:39 【问题描述】:在 Spark 中,可以设置一些 hadoop 配置设置,例如,例如
System.setProperty("spark.hadoop.dfs.replication", "1")
这可行,复制因子设置为 1。 假设是这种情况,我认为这种模式(将“spark.hadoop.”添加到常规 hadoop 配置属性中)也适用于 textinputformat.record.delimiter:
System.setProperty("spark.hadoop.textinputformat.record.delimiter", "\n\n")
但是,spark 似乎只是忽略了此设置。
我是否以正确的方式设置textinputformat.record.delimiter
?
有没有更简单的方法来设置textinputformat.record.delimiter
。我想避免自己写InputFormat
,因为我真的只需要获取由两个换行符分隔的记录。
【问题讨论】:
你用的是什么版本的hadoop? 我正在使用带有 Hadoop 1 / CDH3 的 spark-0.7.2 的预构建版本(请参阅 here)。我很确定它实际上是用 hadoop 1.0.4 构建的 我不确定它是否在那个版本的 hadoop 中,您可能需要将自己重新编译为支持您想要的版本:issues.apache.org/jira/browse/HADOOP-7096 【参考方案1】:我通过以下函数处理了普通的未压缩文件。
import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.io.Text
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat
def nlFile(path: String) =
val conf = new Configuration
conf.set("textinputformat.record.delimiter", "\n")
sc.newAPIHadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text], conf)
.map(_._2.toString)
【讨论】:
能否分享一下你使用的hadoop核心版本。 @SumitKumarGhosh 我相信 CDH 4.4。 看来它需要特定版本 Hadoop 0.23.x 和 2.x 版本 - link 我使用了以下 maven 依赖项 -<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.2.0</version> </dependency>
这也很好 - <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>2.2.0</version> </dependency>
跨度>
以上是关于在 spark 中设置 textinputformat.record.delimiter的主要内容,如果未能解决你的问题,请参考以下文章
在spark中设置textinputformat.record.delimiter
无法在 Jupyter notebook-anaconda 中设置 spark home
如何在 spark-shell 中设置 aws 访问密钥和 aws 密钥
在“spark-defaults.conf”中设置属性“spark.sql.hive.metastore.jars”后出现异常