我正在尝试通过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()
但是,对文本文件执行正常的数据帧加载时效果很好。
请帮助。
答案 0 :(得分:0)
可能,
import org.apache.spark.sql.functions._
... .withColumn("filename",lit("anyFileName")). ..
如果不起作用,请检查功能&#34; input_file_name()&#34;在所有执行程序中都运行良好,而不仅仅是驱动程序节点。