【发布时间】:2018-11-19 11:12:51
【问题描述】:
在 Spark Dataframe 上执行 mapPartitions 操作时,有什么方法可以从 Spark Executor 获取 Hadoop FileSystem? 如果没有,至少有什么方法可以获取 Hadoop 配置以生成新的 Hadoop 文件系统?
考虑到 HDFS 是 kerberized。
用例类似于(伪代码):
spark.sql("SELECT * FROM cities").mapPartitions{ iter =>
iter.groupedBy(some-variable).foreach{ rows =>
hadoopFS.write(rows)
}
TaskContext.getPartitionId
}
【问题讨论】:
-
有一种方法...但是你为什么不直接在数据框对象上调用 write 方法呢?
-
因为我想根据一些变量从执行器中创建一种动态分区。那么...请您这样告诉我好吗?
-
我对伪代码做了一点修改,注意这里不适合调用write方法
-
鉴于 SparkContext 在 executors 中不可用...我认为@cricket_007 提出的解决方案无效
标签: scala apache-spark hadoop apache-spark-sql hdfs