问题标签 [spark-redshift]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
328 浏览

apache-spark - 通过替换 AWS Redshift 表中的现有行来执行 Apache Spark 和合并操作

我在 Apache Spark 应用程序中进行转换,然后必须通过合并操作从 DataFrame 更新 AWS Redshift 表:

  1. 为了避免可能的重复,我需要根据某些条件从 Redshift 表中删除现有记录。
  2. 将 DataFrame 中的所有行插入 Redshift 表中。

我可以通过以下方法通过替换现有行执行合并操作并首先将 DataFrame 存储到临时表(通过 JDBC)中,然后在 Spark 应用程序完成后执行合并(如提到的 AWS 文档中所述)示例气流任务。

我只是想知道这是最优化的方式,还是我可以从我的 Spark 应用程序本身进行此合并,而无需为此目的引入额外的 Airflow 任务?

0 投票
2 回答
400 浏览

java - 无法使用 java 中的 spark-redshift 库连接到 S3

我正在尝试基于 spark 数据集在 Redshift 中创建一个表。我在 jdbc 中使用 spark-redshift 驱动程序在本地实现这一点。执行此操作的代码片段

我的 maven pom.xml 具有以下依赖项:

我正在使用java 1.8。我收到以下错误:

请帮我弄清楚这里出了什么问题。

0 投票
1 回答
312 浏览

apache-spark - Apache Spark 2.4.0、AWS EMR、Spark Redshift 和用户类抛出异常:java.lang.AbstractMethodError

我使用 Apache Spark 2.4.0、AWS EMR 和 Spark Redshift,现在在读取 Spark DataFrame 中的 Redshift 表时遇到以下错误:

版本:

我做错了什么以及如何解决这个问题?

0 投票
0 回答
262 浏览

mysql - Pyspark 在读取 MySQL 数据库时出现时间戳问题

我正在为我的应用程序从 MySQL 表中将数据读取到 Spark 中,由于上下文并取决于输入参数,我需要获取今天之前更新的所有记录,或者仅获取在请求日期之前更新的记录(包括)。

查询是

一旦数据被读入 Spark 数据帧并且 ETL 不包含其他与时间戳相关的操作,该时间戳列就会被丢弃。最后一步是将操纵的记录写入 AWS Redshift 表。

我的问题是,有时应用程序 Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.sql.Timestamp在写入 Redshift 时会崩溃,但我猜这个问题来自读取时的转换,只是 Spark 延迟执行导致写入 Redshift 时出现异常(目标中没有时间戳或日期列任何红移表)

在上个月和每天运行的 4 个不同的作业中,我大约 15% 的时间在日志中遇到了这个异常,然后作业失败了,但它大部分时间运行良好,这使得无法重现问题或调试更远。

我怀疑 SQL 查询中的 String-> Timestamp 转换会造成问题,但我不确定如何以不会引发此异常的另一种方式实现相同的目标。非常感谢任何帮助!

更多堆栈跟踪信息:

0 投票
1 回答
2251 浏览

pyspark - 如何将 pyspark-dataframe 写入红移?

我正在尝试将 pyspark DataFrame 写入 Redshift,但会导致错误:-

java.util.ServiceConfigurationError: org.apache.spark.sql.sources.DataSourceRegister: 提供者 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

火花版本:2.4.1

Spark-submit 命令:spark-submit --master local[*] --jars ~/Downloads/spark-avro_2.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-redshift_2.11:2.0.1,com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.3,org.apache.hadoop:hadoop-common:2.7。 3、org.apache.spark:spark-avro_2.12:2.4.0 script.py

0 投票
1 回答
195 浏览

pyspark - 使用 spark -redshift 连接器将 spark 连接到 redshift 时出现问题

我需要将 spark 连接到我的 redshift 实例以生成数据。我正在使用 spark 1.6 和 scala 2.10 。使用了兼容的 jdbc 连接器和 spark-redshift 连接器。但我面临一个奇怪的问题是:我正在使用 pyspark

当我这样做时df.show(),它会给我错误的权限,我的存储桶被拒绝。这很奇怪,因为我可以看到我的存储桶中正在创建文件,但它们可以被读取。

PS .我也设置了访问密钥和秘密访问密钥。

附言。我也对 s3a 和 s3n 文件系统感到困惑。使用的连接器: https ://github.com/databricks/spark-redshift/tree/branch-1.x

0 投票
0 回答
362 浏览

apache-spark - 将 SparkR 与 Redshift 连接:找不到数据源:com.databricks.spark.redshift

我有一个带有 Amazon EMR 的 Spark 集群设置,上面安装了 RStudio。我正在尝试通过包 spark-redshift_2.11-0.5.0.jar 将 sparkR 与 Redshift 连接,在此期间我遇到错误无法找到数据源:com.databricks.spark.redshift

我已将 spark-redshift_2.11-0.5.0.jar 放置在所有其他 spark jar 文件所在的位置 /usr/lib/spark/jars 中。我使用 github repo https://github.com/databricks/spark-redshift的“Reading data using R:”部分的代码片段

我希望代码能够从红移中提取数据并将其保存在数据框中。但面临以下问题:

0 投票
0 回答
680 浏览

apache-spark - 400 : Bad Request, py4j.protocol.Py4JJavaError: An error occurred while calling o44.save

经过一些研究,我可以使用 pyspark 连接到 redshift,并且可以将表数据读入 spark 数据帧。现在,我正在尝试将该数据框插入另一个红移表(具有相同的结构)。这是我用来连接到 s3/redshift 并从spark_df变量中读取数据的代码。

使用它将数据帧插入spark_df红移spark_df.write时会出现以下错误。

我尝试了不同的模式(append, overwrite,'ignore','error'),但它们都没有将加载的数据插入到 spark 数据框中并给出相应的错误。

任何线索都受到高度赞赏。非常感谢。

仅供参考:spark_df 有大约 500 万行大约 10gb 的数据。

0 投票
2 回答
1971 浏览

apache-spark - :java.lang.NoSuchMethodError:com.amazonaws.services.s3.transfer.TransferManager。(S3;Ljava/util/concurrent/ThreadPoolExecutor;)V

我正在尝试将红移表数据读入红移数据帧并将该数据帧写入另一个红移表。在 spark_submit 中使用以下 .jar 来完成此任务。

这是命令:

我尝试更改所有 jar 和 hadoop-aws 版本的版本,并相应地在各种 stackoverflow 答案中提到,但没有运气。

任何机构都可以在这里帮助我解决可能的问题吗?是 .jar 或 hadoop 的库问题还是其他问题?

谢谢。

0 投票
1 回答
293 浏览

scala - 在 EMR 中使用 spark ad scala 从 redshift 加载数据

我正在尝试使用 Spark 将 Redshift 与 EMR 集群中的 zeppelin 中的 scala 连接起来,我使用了 spark-redshift 库,但它不起作用。我尝试了很多解决方案,但我不知道为什么它会出错