2017-07-17 133 views

回答

1

火花< 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") 

火花的后续版本,使用SparkSession:

SparkSession现在是星火的新的切入点,它取代了旧 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") 
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() 
+0

请注意,这种做法是很不理想运行生产工作负载,因为所有数据都需要先通过驱动程序才能发送给工作节点。但是,如果您只是在进行一些开发,可能会有所帮助。 – Havnar

+0

@Havnar作者是新手,正在寻找建议如何访问和操作最可能在本地机器上使用IDE的数据。 – FaigB

相关问题