Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark “访问”;表$partitions";通过sparksql_Apache Spark_Pyspark_Apache Spark Sql_Amazon Athena - Fatal编程技术网

Apache spark “访问”;表$partitions";通过sparksql

Apache spark “访问”;表$partitions";通过sparksql,apache-spark,pyspark,apache-spark-sql,amazon-athena,Apache Spark,Pyspark,Apache Spark Sql,Amazon Athena,我发现运行以下代码将对表进行完全扫描: select max(run_id) from database.table 因此,我将代码切换为使用以下语法: select max(run_id) from "database"."table$partitions" 这个查询在Athena上非常有效,但是当我尝试使用Spark Sql执行它时,我得到以下错误: mismatched input '"database"' expecting

我发现运行以下代码将对表进行完全扫描:

select max(run_id) from database.table
因此,我将代码切换为使用以下语法:

select max(run_id) from "database"."table$partitions"
这个查询在Athena上非常有效,但是当我尝试使用Spark Sql执行它时,我得到以下错误:

mismatched input '"database"' expecting <EOF>(line 1, pos 24)
应为不匹配的输入“数据库”(第1行,位置24)
似乎spark sql将引号标识为查询的结尾
您知道如何在spark sql上进行此查询吗?

谢谢

我对这个问题的解决方案是:

sql_context.sql(f'show partitions {table_name}').agg(
    f.max(f.regexp_extract('partition', rf'''{partition_name}=([^/]+)''', 1))).collect()[0][0]
优点:它不会对桌子进行完全扫描
缺点:扫描所有分区级别+代码不够优雅。

无论如何,这是我发现的最好的

你能用你使用的spark脚本更新你的问题吗?从“数据库”中选择max(运行id)怎么样?“表”中的?@pltc运行id是分区,所以如果我想得到最大值,我不能过滤他。并在表上执行完全扫描以获取最大值