Apache spark 将数据帧保存为.txt或.csv文件

Apache spark 将数据帧保存为.txt或.csv文件,apache-spark,hadoop,pyspark,output,bigdata,Apache Spark,Hadoop,Pyspark,Output,Bigdata,我正在研究一种机器学习算法来预测以太坊的价格。我已经有了一个小数据集,我正在为它做预测。我可以在终端上打印预测,我可以看到它们。但是,我无法将它们保存为文本/csv文件。这是我的密码 from pyspark.sql.types import * from pyspark.sql import Row, SparkSession from pyspark.mllib.util import MLUtils from pyspark.ml.linalg import Vectors from py

我正在研究一种机器学习算法来预测以太坊的价格。我已经有了一个小数据集,我正在为它做预测。我可以在终端上打印预测,我可以看到它们。但是,我无法将它们保存为文本/csv文件。这是我的密码

from pyspark.sql.types import *
from pyspark.sql import Row, SparkSession
from pyspark.mllib.util import MLUtils
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import VectorAssembler

from pyspark.ml.regression import LinearRegression
from pyspark.sql.types import DateType

from pyspark import SparkContext
import pyspark
import datetime

sc = pyspark.SparkContext()
spark = SparkSession.builder.appName('Ethereum').getOrCreate()
 #get csv file as a DataFram object
data = spark.read.csv('hdfs://andromeda.student.eecs.qmul.ac.uk/user/cln31/ethereum', header=True,inferSchema=True)

#DataFrame type
data = data.select(data.date.cast("int"),
                    data.PriceBTC.cast("float"),
                    data.PriceUSD.cast("float"),
                    data.TxCnt.cast("float"),
                    data.TxTfrValMedUSD.cast("float"),
                    data.CapMrktCurUSD.cast("float"),
                    data.IssContUSD.cast("float"),
                    data.TxTfrValMeanUSD.cast("float"),
                    data.TxTfrValUSD.cast("float"))


data.printSchema()

featureassembler=VectorAssembler(inputCols=["date","TxTfrValMedUSD","CapMrktCurUSD","TxCnt","TxTfrValUSD", "IssContUSD", "TxTfrValMeanUSD"],outputCol="Independent Features")
output = featureassembler.setHandleInvalid("skip").transform(data)
output.show()

output.select("Independent Features").show()

finalized_data=output.select("Independent Features","PriceUSD")
finalized_data.show()

train_data,test_data=finalized_data.randomSplit([0.75,0.25])

regressor=LinearRegression(featuresCol='Independent Features', labelCol='PriceUSD')
regressor=regressor.fit(train_data)

test_data1 = output.filter(data.date >= 1455408000) #2016.02.14
test_data1 = test_data1.filter(test_data1.date <= 1561852800) #2019.06.30

test_data1 = test_data1.select("Independent Features","PriceUSD")

test_data1.show()


pred_results=regressor.evaluate(test_data1)
pred_results.predictions.describe().show()

pred_results.predictions.write.csv("partCOut.csv")

从pyspark.sql.types导入*
从pyspark.sql导入行,SparkSession
从pyspark.mllib.util导入MLUtils
从pyspark.ml.linalg导入向量
从pyspark.ml.feature导入向量汇编程序
从pyspark.ml.回归导入线性回归
从pyspark.sql.types导入日期类型
从pyspark导入SparkContext
进口Pypark
导入日期时间
sc=pyspark.SparkContext()
spark=SparkSession.builder.appName('Ethereum').getOrCreate()
#获取csv文件作为DataFram对象
data=spark.read.csv('hdfs://andromeda.student.eecs.qmul.ac.uk/user/cln31/ethereum,header=True,inferSchema=True)
#数据帧类型
data=data.select(data.date.cast(“int”),
数据价格BTC.cast(“浮动”),
数据价格美元铸造(“浮动”),
数据转换(“浮动”),
数据.txtfrvalmedud.cast(“浮动”),
CAPMRKTCURUD.cast数据(“浮动”),
数据。IssContUSD.cast(“浮动”),
数据TxTfrValMeanUSD.cast(“浮动”),
data.TxTfrValUSD.cast(“float”))
data.printSchema()
featureassembler=VectorAssembler(inputCols=[“日期”、“TxTfrValMedUSD”、“CapMrktCurUSD”、“TxCnt”、“TxTfrValUSD”、“IssContUSD”、“TxTfrValMeanUSD”],outputCol=“独立特征”)
输出=featureassembler.setHandleInvalid(“跳过”).transform(数据)
output.show()
output.select(“独立特征”).show()
最终确定的数据=输出。选择(“独立功能”、“价格美元”)
最终确定的_data.show()
列车数据,测试数据=最终确定的数据。随机分割([0.75,0.25])
回归系数=线性回归(特征col='独立特征',标签col='PriceUSD')
回归器=回归器拟合(列车数据)
测试数据1=output.filter(data.date>=1455408000)#2016.02.14

test_data1=test_data1.filter(test_data1.date听起来很奇怪。我最近处理过类似的问题。我认为问题在于我试图保存的对象不是实际的数据帧。将其转换为数据帧修复了问题,然后我可以保存文件(在我的场景中,它将被保存到SQL server表中)

试试这样的

# your code...
df = pd.DataFrame(mylist)

display(df)

# convert python df to spark df
spark_df = spark.createDataframe(df)
# write df out as table
spark_df.write.csv("/rawdata/AAA.csv")
要检查对象的类型,请尝试以下操作

z = []
type(z)
<type 'list'>

z = ()
type(z)
<type 'tuple'>
z=[]
类型(z)
z=()
类型(z)

那么我该怎么做才能将其保存为文本文件呢?您可以将每一列转换为string*或将其保存为jsonAs@Steven提到的,保存结构的最佳方法是将其保存为
json
,否则您将需要转换每一列或解析数组以将其保存为string column。