![](/img/trans.png)
[英]How to connect to Hive in Virtual Box from IntelliJ IDEA with Spark Scala
[英]How do I connect to Hive from spark using Scala on IntelliJ?
我是 hive 和 spark 的新手,正在嘗試找出一種方法來訪問 hive 中的表以操作和訪問數據。 如何做呢?
在火花 < 2.0
val sc = new SparkContext(conf)
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
val myDataFrame = sqlContext.sql("select * from mydb.mytable")
在更高版本的 spark 中,使用 SparkSession:
SparkSession 現在是 Spark 的新入口點,它取代了舊的 SQLContext 和 HiveContext。 請注意,保留舊的 SQLContext 和 HiveContext 是為了向后兼容。 可以從 SparkSession 訪問新的目錄界面 - 現有的數據庫和表訪問 API,如 listTables、createExternalTable、dropTempView、cacheTable 被移到這里。 ——來自文檔
val spark = SparkSession
.builder()
.appName("Spark Hive Example")
.config("spark.sql.warehouse.dir", warehouseLocation)
.enableHiveSupport()
.getOrCreate()
val myDataFrame = spark.sql("select * from mydb.mytable")
如果您的配置單元服務器駐留在遠程集群上,您可以參考通過 jdbc 連接拉取數據,例如:
import scala.collection.mutable.MutableList
case class TempTable (
column1: String,
column2: String
)
val conn: Connection = DriverManager.getConnection(url, user, password)
val res: ResultSet = conn.createStatement
.executeQuery("SELECT * FROM table_name")
val fetchedRes = MutableList[TempTable]()
while(res.next()) {
var rec = TempTable(res.getString("column1"),
res.getString("column2"))
fetchedRes += rec
}
conn.close()
val resultRDD = sc.parallelize(fetchedRes)
resultRDD.cache()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.