SparkSQL 和局部性

Posted

技术标签:

【中文标题】SparkSQL 和局部性【英文标题】:SparkSQL and locality 【发布时间】:2015-09-09 18:08:38 【问题描述】:

我在 hdfs 上使用 sparksql。 每个 hdfs 节点都有一个 spark slave 运行。 当我运行大型查询时,hdfs 似乎正在节点之间发送数据以触发从属服务器。 为什么 HDFS 不使用本地数据服务本地 spark? 所有任务都显示为 ANY 的位置级别。 我什至设置 spark.locality.wait=10000. 有什么遗漏或需要看的吗? 谢谢,

【问题讨论】:

【参考方案1】:

Spark 需要在作业中运行之前向 YARN 询问执行程序。因此,yarn 在不知道数据在哪里的情况下为执行程序分配容器。要解决这个问题,您需要告诉 spark 在像这样创建 SparkContext 时要创建哪些文件(假设您使用的是 scala):

val locData = InputFormatInfo.computePreferredLocations(
    Seq(new InputFormatInfo(conf, classOf[TextInputFormat], new Path(“myfile.txt”)))

val sc = new SparkContext(conf, locData)

【讨论】:

对不起,我没有提到我在thrify服务器上使用sparksql。

以上是关于SparkSQL 和局部性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PySpark、SparkSQL 和 Cassandra?

SparkSQL的入门实践教程

SparkSQL 和 UDT

SparkSQL、Thrift 服务器和 Tableau

SparkSQl简单使用

求问怎么设置sparksql读取hive的数据库