我正在尝试编写一个pyspark数据帧到Redshift,但它导致了错误:-
java.util.ServiceConfigurationError:org.apache.spark.sql.sources.DataSourceRister:Provider org.apache.spark.sql.avro.avroFileFormat无法实例化
原因:java.lang.nosuchmethoderror:org.apache.spark.sql.execution.datasources.fileformat.$init$(lorg/apache/spark/sql/execution/datasources/fileformat;)V
Spark版本:2.4.1
Spark-submit命令:Spark-submit--master local[*]--jars~/downloads/spark-avro2.12-2.4.0.jar,~/downloads/aws-java-sdk-1.7.4.jar,~/downloads/redshiftjdbc42-no-awssdk-1.2.20.1043.jar,~/downloads/hadoop-aws-2.7.3.jar,~/downloads/hadoop-common-2.7.3.jar--packages com.databricks:spark-redshift2.11:2.0.1,
from pyspark.sql import DataFrameReader
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
from pyspark.sql import SQLContext
from pyspark.sql.functions import pandas_udf, PandasUDFType
from pyspark.sql.types import *
import sys
import os
pe_dl_dbname = os.environ.get("REDSHIFT_DL_DBNAME")
pe_dl_host = os.environ.get("REDSHIFT_DL_HOST")
pe_dl_port = os.environ.get("REDSHIFT_DL_PORT")
pe_dl_user = os.environ.get("REDSHIFT_DL_USER")
pe_dl_password = os.environ.get("REDSHIFT_DL_PASSWORD")
s3_bucket_path = "s3-bucket-name/sub-folder/sub-sub-folder"
tempdir = "s3a://{}".format(s3_bucket_path)
driver = "com.databricks.spark.redshift"
sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)
spark = SparkSession(sc)
spark.conf.set("spark.sql.execution.arrow.enabled", "true")
sc._jsc.hadoopConfiguration().set("fs.s3.impl","org.apache.hadoop.fs.s3native.NativeS3FileSystem")
datalake_jdbc_url = 'jdbc:redshift://{}:{}/{}?user={}&password={}'.format(pe_dl_host, pe_dl_port, pe_dl_dbname, pe_dl_user, pe_dl_password)
"""
The table is created in Redshift as follows:
create table adhoc_analytics.testing (name varchar(255), age integer);
"""
l = [('Alice', 1)]
df = spark.createDataFrame(l, ['name', 'age'])
df.show()
df.write \
.format("com.databricks.spark.redshift") \
.option("url", datalake_jdbc_url) \
.option("dbtable", "adhoc_analytics.testing") \
.option("tempdir", tempdir) \
.option("tempformat", "CSV") \
.save()
Databricks Spark-Redshift不能与Spark 2.4.1版本一起使用,下面是我维护的使其与Spark 2.4.1版本一起使用的版本https://github.com/goibibo/Spark-Redshift
如何使用:
pyspark--包“com.github.goibibo:spark-redshift:v4.1.0”--存储库“https://jitpack.io”
我有以下数据帧(数据6): 我想将其写入txt文件,所有行都在一行中,如下所示: 当我使用以下命令时: write.table(data6, file="C:/MyData.txt",row.names=FALSE, na="",col.names=FALSE, sep=",") 我收到以下 内容: 如何获得单行 文件格式?
我有下面的pyspark数据文件。
我正在尝试使用以下代码将数据帧“df2”保存到文本文件中 代码:df2。写格式(“文本”)。模式(“覆盖”)。保存(“/tmp/hive/save\u text”) 错误: Py4JJavaError Traceback(最近一次调用) /databricks/spark/python/pyspark/sql/utils.py在deco(*a,**kw)62 try:--- /databricks
问题内容: 在Pandas DataFrame中,我可以使用函数将列值与另一列进行匹配。 例如:假设我们有一个DataFrame: 和另一个DataFrame: 我可以使用的功能相匹配的列值对的列值 例如: 产量: PySpark DataFrame中的等效操作是什么? 上面的代码给我一条错误消息: 问题答案: 这种操作在spark中称为“左半联接”: