【发布时间】:2018-08-07 20:05:17
【问题描述】:
对于上下文 - 数据位于 S3 上,以 Hive 表的形式编写。我在我的本地机器上运行一些 Jupyter 笔记本,这些笔记本应该将 S3 数据作为 Hive 表指向,而元数据存储在 Spark 集群上的某个关系数据库中。
当我在本地机器上运行一些本地脚本/Jupyter 笔记本来创建和加载一些表时,这表示我已经创建了一些外部表,即使我没有将它们创建为外部表。
当我运行spark.sql("show tables in target_db").show(20, False) 时,我什么也看不见。然后我创建没有external 选项的表,然后再次运行 show 命令,输出:
+----------+-------------------+-----------+
|database |tableName |isTemporary|
+----------+-------------------+-----------+
|target_db |mytable |false |
+----------+-------------------+-----------+
然后运行我的脚本,错误提示为: org.apache.spark.sql.AnalysisException: Operation not allowed: TRUNCATE TABLE on external tables: ``target_db``.``mytable``;
我将表放在集群本身上,所以我认为这没有问题。 Spark 如何认为我的表是外部表?我需要更改创建表格的方式吗?
【问题讨论】:
标签: apache-spark hive pyspark