Вопрос:

Доступ к уже существующей таблице в Hive

apache-spark hive pyspark hiveql pyspark-sql

12 просмотра

1 ответ

96 Репутация автора

Я создал базу данных book_crossing_dataset в улье и создал в ней 3 таблицы.

1) bx_books 2) bx_books_ratings 3) bx_user

как ниже

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;

Теперь я хочу запросить эту таблицу из спарк, но когда я использую код ниже

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())

там отображается только база данных по умолчанию.

Я использую ссылку ниже как справочную таблицу HIVE в pyspark

Автор: Ayush Goyal Источник Размещён: 11.08.2019 07:54

Ответы (1)


0 плюса

792 Репутация автора

У вас есть вызов для создания базы данных, но вы никогда не используете его в вызове создания таблицы. Я бы посоветовал изменить первые три строки сценария на

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с поддержкой Hive:

import pyspark

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

spark.sql("show databases").show()
Автор: Richard Nemeth Размещён: 11.08.2019 08:19
Вопросы из категории :
32x32