05.10 sparksql和dataframe

sparksql优势:

数据兼容: 数据结果集本身就是SPARK RDD. SparkSQL可兼容Hive, JSON和 parquet等文件. 并可获取RDBMS数据以及访问cassandra等NOSQL数据文件

性能优化: 除了采取In-Memory Columnar Storage、byte-code generation等优化技术外、将会引进Cost Model对查询进行动态评估、获取最佳物理计划等等;

 组件扩展:SQL的语法解析器、分析器还是优化器都可以重新定义,进行扩展. 如 HIVE SQL



SparkCore 核心rdd.

rdd是并行数据集。

SparkSql建立在SHARK上,SHARK依赖于HIVE(数据库)。

SHARK:是依赖于HIVE,解析速度快几倍。

HIVE:相当于mysql数据库似的,存储数据的,可以写sql语句,做数据分析,数据存在HDFS上,

SparkSql还是转成文件系统格式。

SparkSql运行架构:

query(查询)-->Parse(解析)-->Bind(绑定)-->Optimize(数据库选择最优路径)-->Execute(计划执行)。


api:application programming interface应用程序编程接口

API就是一个函数的collection。例如,creatfile()  , rollback()回滚等。


产生dataframe:

1、

from pyspark.sql import Row

from pyspark.sql import *  

sqlContext = SQLContext(sc)

eDF = sqlContext.createDataFrame([Row(a=1, intlist=[1,2,3], mapfield={"a": "b"})])

x=eDF.collect()

print (x[0][0], x[0][1], x[0][2])

2、

namelist = ['John','Marry','Larry']

agelist = [23, 35, 60]

gradelist = [88, 76, 70]

datadb=zip(namelist, agelist, gradelist)

print (datadb)

df = sc.parallelize(datadb).toDF(schema=['name', 'age', 'mark'])

df.show()


产生dataframe,在注册临时表,在用spark.sql查询,spark是变量,生成的

spark=SQLContext(sc)
a=range(10)
b=[2*x for x in range(10)]
df=spark.createDataFrame(zip(a,b),['id','value'])
#df2=spark.createDataFrame(,['haha','hehe'])
df.show()
#df2.show()
print(df.collect())
df.registerTempTable('mytable')#必须先创建临时表
mytabledf = spark.sql("SELECT id, value FROM mytable where id=8")
print(mytabledf.show())



sql做不了,就用map,reduce等。


pandas:为数据分析而创建的,纳入大量数据库,有很多函数和方法,强大高效。

numpy:是python做数值计算,可用来存储和处理大型矩阵,更高效。

panel  data :面板数据

pandas数据结构:

series:一维数组,一行,数据类型必须相同,java是相同的

time-series:以时间为索引的series

dataframe:二维表格数据结构。是series的容器。

panel:三维的数组,是dataframe的容器


exec()执行



编程产生数据结构:

from pyspark.sql import * #从sql导入全部
from pyspark.sql.types import * 

st=StructType([StructField('id',IntegerType(),True),StructField('name',StringType(),True)])
ids=[1,2,3]
names=['aa','bb','cc']
rdd=sc.parallelize(zip(ids,names))
df=rdd.toDF(st)
print(df.show())



读入文件直接产生结构:json和parquet

spark=SQLContext(sc)#直接读了json就转换成df格式,
df=spark.read.json('/user/hadoop/json1')

df.show()




猜你喜欢

转载自blog.csdn.net/gaoshiqi5322688/article/details/80276323
今日推荐