我是hive和spark的新手,我正试图找到一种方法来访问hive中的表来操作和访问数据。怎么办呢?
答案 0 :(得分:1)
in spark< 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")
答案 1 :(得分:0)
如果你的配置单元服务器驻留在远程集群上,你可以通过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()