我不能在Spark 1.6.0视图中使用input_file_name()
函数。它适用于select语句或df.withColumn("path", input_file_name())
,但不适用于视图。
例如:
CREATE VIEW v_test AS SELECT *, input_file_name() FROM table
失败。当我使用INPUT__FILE__NAME
代替时它也失败了。只是:
SELECT *, input_file_name() FROM table
按预期工作。这是一个已知的错误还是我做错了什么? PS:我可以在Hive中创建视图,但无法从Spark访问它,因为它失败并出现相同的错误:未知函数...
更新:
我使用Zeppelin和livy解释器以及Scala API。我从上面的查询中获得的创建视图的错误是:
invalid function input_file_name
我也尝试导入该函数,但它没有任何效果
你有create a temp view
如下
df.registerTempTable("table")
然后使用input_file_name()
。它会完美无缺。
sqlContext.sql("select *, input_file_name() from table")
对于较新版本的spark,您可以使用以下api创建临时视图
df.createOrReplaceTempView("table")
我希望答案是有帮助的