访问配置单元中已经存在的表

uttx8gqw  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(333)

我在hive中创建了一个book\u交叉数据集数据库,并在其中创建了3个表。
1) bx\图书2)bx\图书分级3)bx\用户
就像下面一样

create database book_crossing_dataset;
use book_crossing_dataset;
add jar /home/cloudera/Downloads/ccsv-serde-0.9.1.jar;

create external table stage_bx_user(
  User_ID int,
  Location string,
  Age int
)
row format serde 'com.bizo.hive.serde.csv.CSVSerde'
with serdeproperties(
"separatorChar" = "\;",
"quoteChar" = "\"")
stored as textfile
tblproperties ("skip.header.line.count"="1");

load data local inpath "/home/cloudera/workspace/BX-CSV-Dump/BX-Users.csv" into table stage_bx_user;

create external table bx_user(
 User_ID int,
 Location string,
 Age int
)
stored as parquet;

 insert into table bx_user select * from stage_bx_user;

现在我想从spark查询这个表,但是当我使用下面的代码时

from pyspark import SparkConf
from pyspark import SparkContext
from pyspark.sql import HiveContext

conf = SparkConf().setAppName("Book Crossing")

sc = SparkContext(conf=conf)

hc = HiveContext(sc)

books = hc.sql("show databases")

print(books.show())

只有默认数据库显示在那里。
我在pyspark中使用下面的链接作为参考查询配置单元表

d5vmydt9

d5vmydt91#

您有一个创建数据库的调用,但是您从未在create table调用中使用它。我建议你把剧本的前三行改成

create database if not exists book_crossing_dataset;
use book_crossing_dataset;
add jar /home/cloudera/Downloads/ccsv-serde-0.9.1.jar;

如果这没有帮助,那么问题在于spark配置。我建议你试试 SparkSession 启用配置单元支持时:

import pyspark

spark = pyspark.sql.SparkSession.builder. \
        appName("Book Crossing").enableHiveSupport().getOrCreate()

spark.sql("show databases").show()

相关问题