我用hive创建了一个外表,在spark shell中可以shou展示,可在spark sql中不行
时间: 2024-05-12 11:19:35 浏览: 11
可能是因为在spark sql中需要显式地注册外部表才能使用它。
可以尝试在spark sql中使用以下代码注册外部表:
```scala
spark.sql("CREATE EXTERNAL TABLE <table_name> (...) LOCATION '<HDFS_location>'")
```
其中,`<table_name>`是外部表的名称,`<HDFS_location>`是HDFS中外部表的存储位置。
注册外部表后,就可以在spark sql中使用它了。
相关问题
spark.sql中show table没有发现表,但是我已经在hive中已经创建了表
有可能是因为你在Hive中创建的表和Spark中使用的Metastore不是同一个。可以尝试在Spark中使用以下语句来连接到Hive Metastore:
```sql
spark.sql("use database_name")
```
其中database_name是你在Hive中创建表时使用的数据库名。这样可以确保Spark使用的是正确的Hive Metastore,并能够正确显示表信息。
spark-sql整合hive,在spark-sql命令和spark-shell命令下执行sql命令和整合调用hive
Spark SQL可以与Hive整合,以便在Spark SQL命令和Spark Shell命令下执行SQL命令和调用Hive。要实现这一点,需要在Spark配置中设置以下属性:
1. spark.sql.catalogImplementation=hive
2. spark.sql.warehouse.dir=hdfs://<hive_warehouse_directory>
这些属性告诉Spark使用Hive作为其元数据存储,并指定Hive仓库目录的位置。
在Spark SQL命令下执行SQL命令时,可以使用以下语法:
```
spark-sql> SELECT * FROM <database_name>.<table_name>;
```
在Spark Shell命令下执行SQL命令时,可以使用以下语法:
```
spark.sql("SELECT * FROM <database_name>.<table_name>").show()
```
要调用Hive,可以使用以下语法:
```
spark.sql("CREATE TABLE <table_name> (col1 INT, col2 STRING) USING hive")
```
这将在Hive中创建一个新表。可以使用类似的语法来执行其他Hive操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)