2月7日
sparksql
今天开始学习sparksql,我害怕它是基于hive的如果要用到我的hive的话 我觉得难度不小,由于我是笔记本我的IP地址是一直在变化的,我害怕连接不上hive
Dataframe就是带有schema的RDD

Dataframe和DataSet的区别:
Dataframe是Dataset的特列,DataFrame=Dataset[Row] ,所以可以通过as方法将Dataframe转换为Dataset。Row是一个类型,跟Car、Person这些的类型一样,所有的表结构信息都用Row来表示。
DataSet是强类型的。比如可以有Dataset[Car],Dataset[Person].
编程接口:
在SparkSQL中的编程模型不是使用SparkContext作为程序的入口,但是依赖SparkContext;在spark2.0之前使用SQLContext和HiveContext作为程序入口。在Spark2.0之后我们统一使用SparkSession作为编程入口。
val session = SparkSession.builder().master("local[*]").appName("demo").getOrCreate()
val data: DataFrame = session.read.json("src/people.json")
//显示所有数据:show():属于DataFrame中的一个算子,主要用于输出:
data.show() //data.select("age").show()
//打印schema信息:
data.printSchema()
}
在Spark-Shell命令式交互行中:
sc: 是SparkContext的实例;
spark: 是SparkSession的实例;
scala> spark.read.json("/home/data/people.json")
res44: org.apache.spark.sql.DataFrame = [age: bigint, name: string]
scala> res44.show
+---+---------+
|age| name|
+---+---------+
| 38|zhuang-ge|
| 30| zhou-ge|
| 19| qun-ge|
| 21| tao-ge|
| 22| sai-jie|
| 25| huan-jie|
| 22| zhou-ge|
| 17| da-ge|
+---+---------+
浙公网安备 33010602011771号