码迷,mamicode.com
首页 > 其他好文 > 详细

从RDD创建DataFrame

时间:2021-05-24 08:54:40      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:模式   div   nts   hadoop   gty   ace   view   http   保存   

1.pandas df 与 spark df的相互转换

df_s=spark.createDataFrame(df_p)

df_p=df_s.toPandas()

import pandas as pd
import numpy as np
arr = np.arange(6).reshape(-1,3)

技术图片

df_p=pd.DataFrame(arr)
df_p

技术图片

df_p.columns=[‘a‘,‘b‘,‘c‘]
df_p

技术图片

df_s=spark.createDataFrame(df_p)
df_s.show()

 技术图片

df_s.collect()

技术图片

df_s.toPandas()

技术图片

2. Spark与Pandas中DataFrame对比

http://www.lining0806.com/spark%E4%B8%8Epandas%E4%B8%ADdataframe%E5%AF%B9%E6%AF%94/

 

3.1 利用反射机制推断RDD模式

  • sc创建RDD
  • 转换成Row元素,列名=值
  • spark.createDataFrame生成df
  • df.show(), df.printSchema()
from pyspark.sql import Row
people = spark.sparkContext.textFile(‘file:///usr/local/spark/examples/src/main/resources/people.txt‘).map(lambda line:line.split(‘,‘)).map(lambda w:Row(name=w[0],age=int(w[1])))
sPeople = spark.createDataFrame(people)
sPeople.createOrReplaceTempView(‘people‘)

技术图片

personDF = spark.sql(‘select name,age from people where age>20‘)
personRDD = personDF.rdd.map(lambda p:"Name:"+p.name+","+"Age:"+str(p.age))
personRDD.foreach(print)

 技术图片

sPeople.show()

技术图片

sPeople.printSchema()

技术图片

3.2 使用编程方式定义RDD模式

  • 生成“表头”
    • fields = [StructField(field_name, StringType(), True) ,...]
    • schema = StructType(fields)
from pyspark.sql.types import *
from pyspark.sql import Row
schemaString = ‘name age‘
fields = [StructField(field_name,StringType(),True) for field_name in schemaString.split(‘ ‘)]
schema = StructType(fields)

技术图片

  • 生成“表中的记录”
    • 创建RDD
    • 转换成Row元素,列名=值
lines = spark.sparkContext.textFile(‘file:///usr/local/spark/examples/src/main/resources/people.txt‘)
part = lines.map(lambda w:w.split(","))
peoples = part.map(lambda p:Row(p[0],p[1].strip()))
peoples.collect()

技术图片

  • 把“表头”和“表中的记录”拼装在一起
    • = spark.createDataFrame(RDD, schema)
schemaPeople = spark.createDataFrame(people,schema)
schemaPeople.show()
schemaPeople.printSchema()

技术图片

 4. DataFrame保存为文件

df.write.json(dir)

schemaPeople.write.json(‘file:///home/hadoop/schema_out‘)

技术图片

 

从RDD创建DataFrame

标签:模式   div   nts   hadoop   gty   ace   view   http   保存   

原文地址:https://www.cnblogs.com/wsqjl/p/14767867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!