我在Spark中还很陌生,我一直在尝试将Dataframe转换为Spark中的镶木地板文件,但还没有成功。该文件说,我可以使用 write.parquet
函数来创建该文件。但是,当我运行脚本时,它向我显示: AttributeError:’RDD’对象没有属性’write’
from pyspark import SparkContext
sc = SparkContext("local", "Protob Conversion to Parquet ")
# spark is an existing SparkSession
df = sc.textFile("/temp/proto_temp.csv")
# Displays the content of the DataFrame to stdout
df.write.parquet("/output/proto.parquet")
你知道怎么做吗?
我使用的Spark版本是为Hadoop 2.7.3构建的Spark 2.0.1。
该错误是由于以下事实引起的:textFile
from中的方法SparkContext
返回,RDD
而我需要的是DataFrame
。
SparkSession有一个内幕SQLContext
。因此,我需要先使用DataFrameReader
来正确读取CSV文件,然后再将其转换为镶木地板文件。
spark = SparkSession \
.builder \
.appName("Protob Conversion to Parquet") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
# read csv
df = spark.read.csv("/temp/proto_temp.csv")
# Displays the content of the DataFrame to stdout
df.show()
df.write.parquet("output/proto.parquet")
我有一个超过10亿行的DataFrame(df) 从上面的命令中,我了解到我的100个工作节点集群(spark 2.4.5)中只有5个工作节点将执行所有任务。使用聚结剂(5)需要7小时才能完成。 我应该尝试< code >重新分区而不是< code >联合? 有没有一种更快速/高效的方法来写出128 MB大小的拼花文件,或者我需要首先计算数据帧的大小来确定需要多少分区。 例如,如果我的数据帧大小为
我有一个数据帧,它是由运行特定日期的每日批处理创建的,然后保存在HDFS(Azure Data Lake Gen 2)中。 它是用这样的东西保存的 如您所见,我没有对数据帧进行分区,因为它只包含一个日期。 例如,第一天的第一个文件将存储在文件夹中 交易/2019/08/25 然后第二天,它就会在文件夹里 贸易/2019/08/26 问题是,当所有数据都放好后,日期上的过滤器谓词是否仍会被按下,HD
我对火花有点陌生。在我的spark calc完成后,我目前在amazon s3上看到一些奇怪的缓慢的拼花。 写一个小文件需要1.8小时(写时有2个分区) 我用一个不同的更大的文件(更多行更多列)运行了相同的spark calc(编写时有3个分区) 写入调用本身:
问题内容: 有没有办法从Java创建镶木地板文件? 我的内存中有数据(java类),我想将其写入一个Parquet文件中,以便以后从apache-drill中读取它。 有没有简单的方法可以做到这一点,例如将数据插入sql表? 得到它了 谢谢您的帮助。 结合答案和此链接,我能够创建一个实木复合地板文件并用钻头将其读回。 问题答案: 不建议使用ParquetWriter的构造函数(1.8.1),但不建
我正在使用AWS S3、Glue和Athena进行以下设置: S3级-- 我的原始数据作为CSV文件存储在S3上。我正在使用Glue进行ETL,并使用Athena查询数据。 因为我使用的是雅典娜,所以我想将CSV文件转换为拼花。我现在正在用AWS胶水来做这个。这是我当前使用的流程: 运行爬虫读取CSV文件并填充数据目录 胶水作业一次只允许我转换一个表。如果我有很多CSV文件,这个过程很快就变得无法
我有一个avro格式的数据流(json编码),需要存储为镶木地板文件。我只能这样做, 把df写成拼花地板。 这里的模式是从json中推断出来的。但是我已经有了avsc文件,我不希望spark从json中推断出模式。 以上述方式,parquet文件将模式信息存储为StructType,而不是avro.record.type。是否也有存储avro模式信息的方法。 火花 - 1.4.1
有一个AWS胶水爬虫,它正在创建一个包含拼花文件的S3目录中所有表的数据目录。 我需要将这些文件/表的内容复制到Redshift表。我有几个表,Redshift无法支持Parket文件数据大小。是不够的。 在理想情况下,希望截断这些表。 如何使用COPY命令将此数据加载到红移中?如果我使用spectrum,我只能使用户从外部表插入到红移表,我知道这比批量复制慢?
我试图创建一个Hive表与模式字符串,字符串,双在包含两个拼花文件的文件夹上。第一个拼花文件模式是字符串,字符串,双,第二个文件的模式是字符串,双,字符串。 我正在尝试使用pig(0.14)脚本中的hive表。 但我得到了错误 java.lang.UnsupportedOperationException:无法检查org.apache.hadoop.hive.serde2.io.DoubleWri