ฉันจะเชื่อมต่อกับไฮฟ์โดยใช้ pyspark ได้อย่างไร

ฉันกำลังพยายามสร้างตารางใน HIVE แต่กำลังสร้างโฟลเดอร์เช่น testdb.db ภายในโฟลเดอร์ spark-warehouse ฉันจะจัดเก็บโดยตรงใน HIVE ได้อย่างไรในขณะที่เราจัดเก็บไว้ในฐานข้อมูล MySQL/MongoDB

conf = SparkConf().setAppName("data_import")
sc = SparkContext(conf = conf)

sqlContext = HiveContext(sc)

sqlContext.setConf("spark.sql.shuffle.partitions", "2")
sqlContext.sql("CREATE DATABASE testdb")
sqlContext.sql("use testdb")
sqlContext.sql("create table daily_revenue(order_date string, daily_revenue float)")

person Krishna    schedule 22.01.2018    source แหล่งที่มา
comment
แทนที่จะเป็น use testdb ให้ลองนำหน้า create ของคุณเป็น testdb.daily_revenue   -  person Bala    schedule 22.01.2018


คำตอบ (2)


เมื่อคุณสร้างตารางใน HIVE สิ่งที่เกิดขึ้นเบื้องหลังคือ จะจัดเก็บข้อมูลเมตาในฐานข้อมูลเชิงสัมพันธ์บางส่วน ขึ้นอยู่กับการกำหนดค่าสำหรับสภาพแวดล้อมของคุณ และข้อมูลจริงจะถูกจัดเก็บไว้ในไดเร็กทอรีคลังสินค้า HDFS หากตารางนั้นได้รับการจัดการ

ในทำนองเดียวกันเมื่อคุณพยายามสร้างตารางจาก Spark ใน HIVE สิ่งที่จะทำคือ ขั้นแรกมันจะสร้างโฟลเดอร์ .db และภายในโฟลเดอร์นี้ มันจะสร้างโฟลเดอร์อื่นที่มีชื่อตาราง ซึ่งจะจัดเก็บข้อมูลบน HDFS

ดังนั้นในกรณีของคุณ คุณควรมีโฟลเดอร์ <warehouse_dir>/testdb.db/table และถ้าคุณโหลดข้อมูลใดๆ ลงในตารางนี้ ข้อมูลนั้นจะปรากฏในโฟลเดอร์ตาราง

หวังว่ามันจะช่วยได้

ความนับถือ,

นีราช

person neeraj bhadani    schedule 22.01.2018
comment
ใช่. ฉันเห็น ‹warehouse_dir›/testdb.db/table นี้ แต่ฉันไม่เห็นสิ่งนั้นใน HDFS ฉันจำเป็นต้องเปลี่ยนไฟล์การกำหนดค่าใด ๆ หรือไม่? - person Krishna; 22.01.2018

person    schedule
comment
คุณได้ตอบสำหรับ hive CLI แล้ว ฉันถามว่าฉันจะเชื่อมต่อกับคลังสินค้าไฮฟ์โดยใช้ pyspark ได้อย่างไร - person Krishna; 24.01.2018
comment
คุณเปลี่ยน sqlContext เป็น Hive CLI เมื่อใด คุณลองคำตอบใน Pyspark เชลล์แล้วหรือยัง? - person Bala; 24.01.2018