Как создать СДР прямо из таблицы Hive? - PullRequest
0 голосов
/ 07 марта 2019

Я изучаю spark и создаю rdd, используя объект SparkContext и используя некоторые локальные файлы s3 и hdfs следующим образом:

val lines = sc.textFile("file://../kv/mydata.log")

val lines = sc.textFile("s3n://../kv/mydata.log")

val lines = sc.textFile("hdfs://../kv/mydata.log")

Теперь у меня есть некоторые данные в таблицах Hive. Можно ли напрямую загружать таблицы кустов и использовать эти данные в качестве СДР?

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

СДР теперь устарели.Вы можете читать данные непосредственно из таблиц Hive в DataFrames, используя новые API-интерфейсы spark.Вот ссылка на Spark версии 2.3.0 (измените версию в зависимости от вашей установки.)

https://spark.apache.org/docs/2.3.0/sql-programming-guide.html#hive-tables

Вот пример программы.Вы можете сохранить результат последней строки в DataFrame и выполнять все виды операций, которые вы обычно выполняете на RDD, таких как map, filter.

//Accessing Hive tables from Spark
import java.io.File
import org.apache.spark.sql.{Row, SaveMode, SparkSession}
case class People(name:String,age:Int,city:String,state:String,height:Double,weight:Double)
val warehouseLocation = new File("spark-warehouse").getAbsolutePath
val spark = SparkSession.builder.master("yarn").appName("My Hive 
 App").config("spark.sql.warehouse.dir", warehouseLocation)
  .enableHiveSupport()
  .getOrCreate()
import spark.implicits._
import spark.sql
sql("CREATE TABLE IF NOT EXISTS people(name String,age Int,city String,state String,height Double,weight Double)  ROW FORMAT DELIMITED FIELDS TERMINATED BY ','")
sql("LOAD DATA LOCAL INPATH 'file:/home/amalprakash32203955/data/people1.txt' INTO TABLE people")
sql("SELECT * FROM people").show()
0 голосов
/ 07 марта 2019

Это можно сделать с помощью HiveContext следующим образом:

val hiveContext = HiveContext(sc);
val rows = hiveContext.sql("Select name, age from students")
...