Hadoop 在Spark 1.6.0视图中输入文件名

Hadoop 在Spark 1.6.0视图中输入文件名,hadoop,apache-spark,hive,apache-spark-sql,apache-zeppelin,Hadoop,Apache Spark,Hive,Apache Spark Sql,Apache Zeppelin,我无法在Spark 1.6.0视图中使用input\u file\u name()函数。它在select语句或df.withColumn(“path”,input_file_name())中工作,但不在视图中工作 例如: CREATE VIEW v_test AS SELECT *, input_file_name() FROM table 失败了。当我改用INPUT\u FILE\u NAME时,它也会失败。只是: SELECT *, input_file_name() FROM table

我无法在Spark 1.6.0视图中使用
input\u file\u name()
函数。它在select语句或
df.withColumn(“path”,input_file_name())
中工作,但不在视图中工作

例如:

CREATE VIEW v_test AS SELECT *, input_file_name() FROM table
失败了。当我改用
INPUT\u FILE\u NAME
时,它也会失败。只是:

SELECT *, input_file_name() FROM table
一切正常。这是一个已知的bug还是我做错了什么? PS:我可以在配置单元中创建视图,但无法从Spark访问它,因为它会出现相同的错误:未知函数

更新:
我使用齐柏林飞艇和livy解释器和Scala API。 我在创建视图时从上面的查询中得到的错误是:
无效的函数输入\u文件\u名称


我还尝试导入该函数,但没有效果

您已经创建了一个临时视图,如下所示

df.registerTempTable("table")
然后使用
输入文件名()。它会完美地工作

sqlContext.sql("select *, input_file_name() from table")
对于较新版本的spark,您可以使用以下api创建临时视图


我希望答案有帮助

我使用scala。。。但你说的是,它只适用于Spark 2.0以上版本?它适用于我。:)你能用你尝试过的更新吗?我在下面回答了如何创建临时视图:)希望它能帮助你解决问题谢谢你的帮助。你认为这可能是livy的问题吗?另一件事,
INPUT\u FILE\u NAME
不应该工作,因为我使用了
HiveContext
?我想永久创建视图,然后从许多spark应用程序中使用。问题是,我可以在Hive中创建视图,但是当我用Spark从齐柏林飞艇上查询它时,我得到了错误,我对此一无所知。你应该更新问题中的信息。肯定有人会回答你的问题
df.createOrReplaceTempView("table")