Scala 如何直接从配置单元表创建RDD?

Scala 如何直接从配置单元表创建RDD?,scala,apache-spark,hive,rdd,hiveql,Scala,Apache Spark,Hive,Rdd,Hiveql,我正在学习spark,并使用SparkContext对象和一些本地文件(s3和HDF)创建rdd,如下所示: val lines = sc.textFile("file://../kv/mydata.log") val lines = sc.textFile("s3n://../kv/mydata.log") val lines = sc.textFile("hdfs://../kv/mydata.log") val hiveContext = HiveContext(sc); val r

我正在学习spark,并使用SparkContext对象和一些本地文件(s3和HDF)创建rdd,如下所示:

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

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

val lines = sc.textFile("hdfs://../kv/mydata.log")
val hiveContext = HiveContext(sc);
val rows = hiveContext.sql("Select name, age from students")

现在我在配置单元表中有一些数据。是否可以直接加载配置单元表并将该数据用作RDD?

可以使用HiveContext如下所示:

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

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

val lines = sc.textFile("hdfs://../kv/mydata.log")
val hiveContext = HiveContext(sc);
val rows = hiveContext.sql("Select name, age from students")

可以使用HiveContext执行此操作,如下所示:

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

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

val lines = sc.textFile("hdfs://../kv/mydata.log")
val hiveContext = HiveContext(sc);
val rows = hiveContext.sql("Select name, age from students")

RDD现在已经过时了。您可以使用新的spark API将数据直接从配置单元表读取到数据帧。以下是Spark 2.3.0版的链接(根据您的安装更改版本)

这是一个示例程序。您可以将最后一行的结果存储到数据帧中,并执行通常在类似RDD的映射、过滤器上执行的各种操作

//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()

RDD现在已经过时了。您可以使用新的spark API将数据直接从配置单元表读取到数据帧。以下是Spark 2.3.0版的链接(根据您的安装更改版本)

这是一个示例程序。您可以将最后一行的结果存储到数据帧中,并执行通常在类似RDD的映射、过滤器上执行的各种操作

//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()

如果加载的文本文件包含TB的数据怎么办?它能读入数据帧吗?如果加载的文本文件包含TB的数据怎么办?它能读入数据帧吗?