ฉันมีแบบสอบถาม Spark SQL ในไฟล์ test.sql -
CREATE GLOBAL TEMPORARY VIEW VIEW_1 AS select a,b from abc
CREATE GLOBAL TEMPORARY VIEW VIEW_2 AS select a,b from VIEW_1
select * from VIEW_2
ตอนนี้ ฉันเริ่ม spark-shell ของฉันแล้วลองดำเนินการแบบนี้ -
val sql = scala.io.Source.fromFile("test.sql").mkString
spark.sql(sql).show
สิ่งนี้ล้มเหลวโดยมีข้อผิดพลาดดังต่อไปนี้ -
org.apache.spark.sql.catalyst.parser.ParseException:
mismatched input '<' expecting {<EOF>, 'GROUP', 'ORDER', 'HAVING', 'LIMIT', 'OR', 'AND', 'WINDOW', 'UNION', 'EXCEPT', 'MINUS', 'INTERSECT', 'SORT', 'CLUSTER', 'DISTRIBUTE'}(line 1, pos 128)
ฉันพยายามดำเนินการค้นหาเหล่านี้แบบ 1 ต่อ 1 ในคำสั่ง spark.sql ที่แตกต่างกัน และมันก็ทำงานได้ดี ปัญหาคือ ฉันมีคำถาม 6-7 รายการที่สร้างมุมมองชั่วคราว และสุดท้าย ฉันต้องการผลลัพธ์จากการดูครั้งล่าสุด มีวิธีที่ฉันสามารถเรียกใช้ SQL เหล่านี้ในคำสั่ง spark.sql เดียวได้หรือไม่ ฉันเคยทำงานกับ Postgres SQL (Redshift) และสามารถดำเนินการค้นหาประเภทนี้ได้ ใน spark sql ฉันจะต้องรักษาไฟล์จำนวนมากในกรณีนี้