小数据玩转pyspark(1)

sqoop:导入结构化数据

kafka:导入流式数据

HDFS:文件存储形式(数据存在Hadoop上是,存在HDFS)怎么访问呢?最传统的肯定是MR,后期有Hive(其实就是把MR通过sql转换了一下,Hive本身并没有存储功能,存储还是HDFS),现在也可以用spark进行数据操作(spark SQL),PIG是一种脚本式操作语言,可以直接操作HDFS

HBASE:键值对存储形式(MPP的数据库)

MR在计算的时候时间比较长,如果做交互式的想立即得到结果的不现实,所以只能做批处理

流式处理,spark\storm, spark streaming流式处理(秒级)

建模主要用的Spark: HDFS数据导入spark,这样可以享受内存级别的运算,如果是在HDFS上是在硬盘上运行,io比较多,数据挖掘的速度非常慢。

spark

 spark是hadoop生态的重要一环,一般spark是建立在HDFS基础上,当然你也可以单机版直接运行。

spark批处理数据ETL性能比Hadoop的MR高100倍

中间数据在内存中,更高效、低延迟(但存在内存溢出问题)

机器学习——适合迭代多次,数据重复利用的场合

RDD:只读、可分区的分布式数据集。添加新列必须重新创建RDD。

 

 

在notebook里面运行的话,要自己建立SparkSession,不像交互式编辑器会帮我们建立

from pyspark.sql import SparkSession

spark = SparkSession.builder.master("local").appName("CreditCard").getOrCreate() #创建sparksession

sc = spark.sparkContext #创建sparkcontext

 

#数据读入

loanfile = os.listdir()
createVar = locals() #每个变量是个名字
for i in loanfile:
if i.endwith("csv"):
createVar[i.split('.')[0]] = spark.read.csv(i, inferSchema=True, header=True, encoding='gbk')
print(i.split(',')[0]

#聚合操作

data_4temp3=spark.sql("select account_id,type,sum(amount) as amount\
from data_4temp1 \
group by account_id,type \
order by account_id,type")
data_4temp4 = data_4temp3.groupby('account_id').pivot('type', values=['credit', 'debit']).sum('amount')

#去掉列

data6 = data5.drop('data','birth_date')

#spark dataframe转成pandas dataframe

data6 = data5.drop('data','birth_date')
data6_df = data6.toPandas()


posted @ 2019-04-21 22:34  fionaplanet  阅读(695)  评论(0)    收藏  举报