簡體   English   中英

帶有 HIVE 的 Spark JDBC - Scala

[英]Spark JDBC with HIVE - Scala

我在 HIVE 中有一個示例表(stuends1),我想使用 JDBC 從 Spark 連接(因為 Hive 在 AWS 中,而不是在同一個集群中)。 我只是嘗試使用以下代碼

def main(args: Array[String]): Unit = {
//Class.forName("org.apache.hive.jdbc.HiveDriver").newInstance()
val conf = new SparkConf().setAppName("SOME APP NAME").setMaster("local[*]")

val sc = new SparkContext(conf)


val spark = SparkSession
  .builder()
  .appName("Spark Hive Example")
  .getOrCreate()

val jdbcDF = spark.read
  .format("jdbc")
  .option("url", "jdbc:hive2://34.223.237.55:10000")
  .option("dbtable", "students1")
  .option("user", "hduser")
  .option("password", "hadoop")
  //.option("driver", "org.apache.hadoop.hive.jdbc.HiveDriver")
  .load()

println("able to connect------------------")

jdbcDF.show

jdbcDF.printSchema()

jdbcDF.createOrReplaceTempView("std")



val sqlDF = spark.sql("select * from std")

println("Start println-----")
spark.sqlContext.sql("select * from std").collect().foreach(println)
println("end println-----")
sqlDF.show(false)
}

我嘗試了多種方式,但一直只顯示帶有列名的表結構。 喜歡 ...

+--------------+-------------+-------------+
|students1.name|students1.age|students1.gpa|
+--------------+-------------+-------------+
+--------------+-------------+-------------+

但不是數據,但在嘗試從我的本地使用 dbeaver 使用 SQL 查詢時能夠獲取數據。 從 spark 來看, jdbcDF.printSchema() 也顯示了正確的 schema ,所以我想連接沒有問題。

我正在使用帶有 HIVE 1.2.1 的 spark 2.1.1。 我的 sbt.build 文件是這樣的....

libraryDependencies ++= Seq(

"log4j"  %   "log4j"  % "1.2.17",
"org.apache.spark" % "spark-core_2.11"                        % "2.1.1" ,
"org.apache.spark" % "spark-streaming-kafka_2.10"             % "1.6.2",
"org.apache.spark" % "spark-hivecontext-compatibility_2.10"   % "2.0.0-preview",
"org.apache.spark" % "spark-sql_2.11"                         % "2.1.1" ,
"org.apache.spark" % "spark-hive_2.10"                        % "2.1.1",
"org.apache.hive"  % "hive-jdbc"                              % "1.2.1"

)

任何人都可以建議為什么我沒有得到 show() 的任何輸出。 提前致謝...

請提及 fetchsize 屬性,它將解決沒有數據的問題。

fetchsize - JDBC 提取大小,它確定每次往返要提取多少行。 這有助於為獲取大小較低的 JDBC 驅動程序(例如,具有 10 行的 Oracle)獲得一些性能。 此選項僅適用於閱讀。

val jdbcDF = spark.read
  .format("jdbc")
  .option("url", "jdbc:hive2://34.223.237.55:10000")
  .option("dbtable", "students1")
  .option("user", "hduser")
  .option("password", "hadoop")
  .option("fetchsize", "20")
  .load()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM