0

com.databricks.spark.xml通过格式加载xml文件时,我试图为每一行添加输入文件名。但它返回文件名的空列..

这是代码片段。我正在使用input_file_name功能:

sqlContext.read.format("com.databricks.spark.xml")
  .option("rowTag", "BO_RECORD")
  .load("file:///<path>/*")
  .withColumn("filename", input_file_name())
  .show()

返回:

+------------+-----------+---------------+--------+
|TicketRefund|TicketsSold|_corrupt_record|filename|
+------------+-----------+---------------+--------+
|           0|          3|           null|        |
|           0|          1|           null|        |
|           0|         18|           null|        |
|           0|         22|           null|        |
|           0|          3|           null|        |
+------------+-----------+---------------+--------+

我尝试了不同的方法,但在使用 com.databricks.spark.xml 时它仍然返回空文件名。

sqlContext.read.format("com.databricks.spark.xml")
  .option("rowTag", "BO_RECORD")
  .load("file:///<path>/*")
  .select(input_file_name())
  .show()

但是,它在为文本文件执行正常数据帧加载时效果很好。

请帮忙。

4

1 回答 1

0

也许,

import org.apache.spark.sql.functions._
... .withColumn("filename",lit("anyFileName")). ..

如果它不起作用,请检查函数“input_file_name()”在所有执行程序中是否正常工作,而不仅仅是驱动程序节点。

于 2017-04-12T15:37:58.417 回答