当前位置: 首页 > 知识库问答 >
问题:

Spark SQL-INSERT到外部配置单元表错误

卫甫
2023-03-14
create external table tab1 ( col1 type,col2 type,col3 type) clustered by (col1,col2) sorted by (col1) into 8 buckets stored as parquet
    SparkSession session = SparkSession.builder().appName("ParquetReadWrite").
                    config("hive.exec.dynamic.partition", "true").
                    config("hive.exec.dynamic.partition.mode", "nonstrict").
                    config("hive.execution.engine","tez").
                    config("hive.exec.max.dynamic.partitions","400").
                    config("hive.exec.max.dynamic.partitions.pernode","400").
                    config("hive.enforce.bucketing","true").
                    config("optimize.sort.dynamic.partitionining","true").
                    config("hive.vectorized.execution.enabled","true").
                    config("hive.enforce.sorting","true").
                    enableHiveSupport()
                    .master(args[0]).getOrCreate();
String insertSql="insert into tab1 select * from"+"'"+parquetInput+"'";

session.sql(insertSql);
at org.apache.spark.sql.catalyst.parser.ParseException.withCommand(ParseDriver.scala:239)
at org.apache.spark.sql.catalyst.parser.AbstractSqlParser.parse(ParseDriver.scala:115)
at org.apache.spark.sql.execution.SparkSqlParser.parse(SparkSqlParser.scala:48)

共有1个答案

谢俊悟
2023-03-14

你试过了吗

在本地路径“/path/to/DATA”中加载数据

覆盖到表tableName中;

 类似资料:
  • 我正在使用Spark生成拼花文件(通过分区,使用Snappy压缩),并将它们存储在HDFS位置。 拼花数据文件存储在下 然后为其创建配置单元表,如下所示:

  • 问题内容: 我将RDD [myClass]转换为数据框,然后将其注册为SQL表 该表是可调用的,可以用以下命令演示 但是下一步给出了错误,说表未找到:my_rdd Spark的新手。 不明白为什么会这样。有人可以帮我吗? 问题答案: 确保从相同的SQLContext导入hidden._。临时表在一个特定的SQLContext中保留在内存中。

  • 我将RDD[myClass]转换为dataframe,然后将其注册为SQL表 此表是可调用的,可以使用以下命令演示 对Spark来说是个新手。不明白为什么会这样。有谁能帮我摆脱这一切吗?

  • 在创建配置单元表时,如果使用分区或关键字群集,配置单元将创建对应于每个分区或桶的单独文件。但是对于外部表,这仍然有效。根据我的理解,与外部文件相对应的数据文件不是由hive管理的。同样,hive也会创建对应于每个分区或bucket的附加文件,并将相应的数据移到这些文件中。 编辑-添加详细信息。 摘自“Hadoop:权威指南”-“第17章:配置单元” 当我们将数据加载到分区表中时,分区值是显式指定的

  • 插入覆盖失败,出现空指针异常- 失败:NullPointerException为空

  • 问题内容: 我每天都在“测试”文件夹下写入文件。例如: 我在创建的LOGS表中看不到任何数据。 但是,我使用创建表 我可以看到那几天的记录。 我想在我的HIVE表中的/ test目录下查看所有数据,而且/ test目录每天都填充有新文件。 问题答案: 选项1 为了支持子目录 如果您的Hive版本低于2.0.0,那么 选项2 创建一个分区表 如果使用标准约定保留目录,例如,而不是保留目录,将更易于管