1、使用pyspark读取csv:
spark.read.format("csv").load('/user/data.csv',header=True, inferSchema="true")
2、dataframe补充空值:
fillna()
3、
dataframe字段表示方式:
"APP_HOBY_CASH_LOAN"或
df.APP_HOBY_CASH_LOAN或
data_df["APP_HOBY_CASH_LOAN"]
pyspark dataframe使用astype实现dataframe字段类型转换
# 两种读取csv文件的方式
data_df = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("/user/data.csv")
data_df = spark.read.format("csv").load('/user/data.csv',header=True, inferSchema="true")
# 补充空值方法
data_df = data_df.fillna(0)
# 打印表结构 第一种执行较快
print(df_from_java.columns)
data_df.printSchema()
print(df_from_java.schema())
# 第一种方式
data_df = df.withColumn("APP_HOBY_CASH_LOAN", df.APP_HOBY_CASH_LOAN.cast('float'))
# 第二种方式
from pyspark.sql.types import IntegerType
data_df = data_df.withColumn("APP_HOBY_CASH_LOAN", data_df["APP_HOBY_CASH_LOAN"].cast(IntegerType()))
pandas dataframe使用astype实现dataframe字段类型转换
# -*- coding: UTF-8 -*-
import pandas as pd
df = pd.DataFrame([{'col1':'a', 'col2':'1'}, {'col1':'b', 'col2':'2'}])
print df.dtypes
df['col2'] = df['col2'].astype('int')
print '-----------'
print df.dtypes
df['col2'] = df['col2'].astype('float64')
print '-----------'
print df.dtypes
pandas和pyspark的dataframe互转
#!/usr/bin/python
# -*- coding: utf-8 -*-
from pyspark import SparkConf
from pyspark.sql import SparkSession
import pandas as pd
# pyspark dataframe转pandas dataframe
conf = SparkConf()
conf.set("spark.yarn.queue", "root") \
.set("spark.app.name", "lbs_coordinate")
spark = SparkSession.builder.config(conf=conf).enableHiveSupport().getOrCreate()
pyspark_df = spark.sql("select * from tmp.test_table")
pandas_pd=pyspark_df.toPandas()
# pandas dataframe转pyspark dataframe
pandas_df = pd.DataFrame([{'col1':'a', 'col2':'1'}, {'col1':'b', 'col2':'2'}])
pyspark_df = spark.createDataFrame(pandas_df)
from
pyspark
.sql import
Spark
Session
from
pyspark
.sql import Row
from
pyspark
.sql.types import *
from
pyspark
.sql.functio...
简单自编码器实现
在我们使用TensorFlow进行深度学习训练时,很多时候都是与Numpy数据打招呼,例如我们csv或者照片数据等。
但是我们都知道,TensorFlow训练时都是使用Tensor来存储变量的,并且网络输出的结果也是Tensor。
一般情况下我们不会感受到Numpy与Tensor之间的区别,因为TensorFlow网络在输入Numpy数据时会自动转换为Tensor来处理。
但是在输出网络时,输出的结果仍为Tensor,当我们要用这些结果去执行只能由Numpy数据来执行的操作时就会出现莫名其
DataFrame
中的ArrayType
类型
可以接受List、Tuple,但无法接受Numpy中的array。所以
DataFrame
并不会根据需要改变变量的结构,同一个列的数据的
类型
必须一致。
Pyspark
版本:V3.2.1。
因为
Spark
DataFrame
是基于RDD创建的,所以
DataFrame
的操作也可以分为两种
类型
:转化操作和行动操作。转化操作可以将
Spark
DataFrame
转化为新的
DataFrame
,而不改变原有数据。转化操作都是惰性的,不会立即计算出来。而行动操作会触发所有转化操作的实际求值。......
values =
pandas
_df.values.tolist()
columns =
pandas
_df.columns.tolist()
spark
_df =
spark
.create
DataFrame
(values, columns)
#
spark
转pand...
简介
DataFrame
结构代表的是数据的一个不可变分布式集合,其数据都被组织到有名字的列中,就像关系型数据库中的表一样。
DataFrame
的目的就是要让对大型数据集的处理变得更简单,它让开发者可以为分布式的数据集指定一个模式,进行更高层次的抽象。本文将着重介绍
PySpark
中
DataFrame
的各种创建方式,以及与RDD、
Pandas
之间的转换。
DataFrame
的创建1. 从RDD中创建为了从...
1. 从
PySpark
DataFrame
创建
Pandas
在
Spark
上完成转换后,您可以使用to
Pandas
()方法轻松地将其转换回
Pandas
。
#Convert
PySpark
to
Pandas
pandas
DF =
pyspark
DF.to
Pandas
()
注意: to
Pandas
()方法是将数据收集到
Spark
Driver 内存中的操作,因此在处理大型数据集时必须非常小心。如果收集的数据不适合
Spark
Driver 内存,您将收到 OutOfMemoryExceptio
pySpark
中将数据to
Pandas
(),但是to
Pandas
()也会运行慢 运行内存不足等问题。
在网上找到一种方法,比自带的to
Pandas
()更快捷。
import
pandas
as pd
def _map_to_
pandas
(rdds):
""" Needs to be here due to pickling issues """
return [pd.
DataFrame
(list(rdds))]
def to_
Pandas
(df, n_partitions=None):
needConversion()
此
类型
是否需要在
Python
对象和内部SQL对象之间进行转换。
这用于避免对ArrayType / MapType / StructType进行不必要的转换。
simpleString()
toInternal()
将
Python
对象转换成SQL
1.
spark
DataFrame
的
类型
为
pyspark
.sql.
dataframe
.
DataFrame
,通过df.to
Pandas
()即可转换为
pandas
中的
dataFrame
类型
。2.对于
pandas
中的
DataFrame
,想要转换为
spark
类型
的,使用sqlContext = SQLContext(
Spark
Context()),
spark
Context= sqlContext.creat...
pyspark
.sql.
dataframe
.
DataFrame
有自带的函数,.to
Pandas
();
下面是别人写的,但是.collect()那里会报错,用自带的to
Pandas
()会报:
Total size of serialized results of 14 tasks (1060.1 MB) is bigger than
spark
.driver.maxResultSize (1024....