如何动态地将表格名称解析为Parquet?

时间:2017-03-17 20:49:12

标签: scala apache-spark apache-spark-sql parquet

我需要使用自己的自定义函数从表名到Parquet数据运行Spark SQL查询。使用sqlContext.read.parquet将Parquet数据读取到DataFrame并使用df.registerTempTable注册DataFrames并不是为了我的用例,因为这些调用必须在SQL查询之前运行,否则我甚至可能不会知道需要什么表。

我没有使用registerTempTable,而是尝试使用我自己的逻辑编写一个解析表名的Analyzer。但是,我需要能够将UnresolvedRelation解析为代表Parquet数据的LogicalPlan,但sqlContext.read.parquet会提供DataFrame,而不是LogicalPlan

DataFrame似乎有logicalPlan属性,但标记为protected[sql]。还有一个ParquetRelation课程,但那是private[sql]LogicalPlan。这就是我找到的方法ostream out (&buff) ;

如何使用我自己的逻辑将表名称解析为Parquet?我甚至在使用Analyzer的正确轨道上了吗?

1 个答案:

答案 0 :(得分:1)

您实际上可以使用

检索DataFrame的logicalPlan
val myLogicalPlan: LogicalPlan = myDF.queryExecution.logical