问题标签 [pyspark-sql]
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.
apache-spark - 如何将类型 Row 转换为 Vector 以提供给 KMeans
当我尝试将 df2 提供给 kmeans 时,出现以下错误
我得到的错误:
df2 是如下创建的数据框:
如何将这两列转换为 Vector 并将其提供给 KMeans?
csv - 将从 CSV 创建的数据帧馈送到 MLlib Kmeans:IndexError:列表索引超出范围
因为我不能使用 spark csv,所以我从 CSV 手动创建了一个数据框,如下所示:
我只需要两列:
[DenseVector([-6.2416, 106.7949]), DenseVector([-6.2443, 106.7956])]
现在似乎一切都准备好进行 KMeans 训练了:
但我收到以下错误:
ALS.csv 的前三行:location_history_id,user_id,latitude,longitude,address,created_at,valid_until,timezone_offset_secs,opening_times_id,timezone_id
python - PySpark:UDF 未在数据帧上执行
我在 Azure 上的 Jupyter 中使用 PySpark。我正在尝试在数据帧上使用 UDF 进行测试,但是 UDF 没有执行。
我的数据框由以下人员创建:
我已经确认这个数据框填充了 100 行。在下一个单元格中,我尝试执行一个简单的 udf。
这不会产生任何输出。我本来希望数据框中的每个条目都已打印出来。但是,如果我只是尝试iterateMeals('test')
它会触发并打印“测试”。我也尝试过使用pyspark.sql.functions
当我尝试这个时,我收到以下错误:
有人可以解释我哪里出错了吗?我将需要在.foreach
此应用程序的数据帧中执行 udfs。
apache-spark - PySpark - ALS 输出中的 RDD 到 DataFrame
我正在使用 Spark 的推荐系统。
训练一个模型后,我做了下面的代码来获得推荐模型。recommendProductsForUsers(2)
在这种情况下Rec
,RDD
请参见下文。
如何将此信息放入数据框中,例如
谢谢你的时间
apache-spark - pyspark.sql.functions.from_utc_timestamp()中的tz参数
嗨,我目前正在通过 Spark 处理时间序列数据并处理时区。
SparkSQL 的一些内置函数使用了特定的时区参数,例如:
在我的情况下,使用时区简写可能不方便,因为时区信息以“+01:00”的格式存储。
所以我的问题是:如何将“+01:00”格式的偏移字符串合并到火花数据帧中,以便考虑偏移?
apache-spark - Spark 独立应用程序在最后一点挂起
我对 Spark 比较陌生,并使用 python 和 spark SQL 编写了一个简单的脚本。我的问题是它在执行的开始阶段完全没问题,但逐渐变慢了,在最后一个阶段结束时整个应用程序挂起。这是应用程序被挂起的代码片段 -
我在终端上有以下内容 -
之后,整个应用程序被挂起。我的 spark-env.sh 文件具有以下配置:
我正在使用3 节点集群。一名拥有2 核和 4 GB 内存的Master和另外两名拥有4 核和 7 GB 内存的Worker。
到目前为止,我已经尝试了以下方法 -
- 增加执行器核心的数量
- 增加/减少具有不同资源数量的执行者。
我有 -
- 火花-1.6.0
- 爪哇 7
- 斯卡拉 2.10.4
- 预建的hadoop 2.3
- 预建蜂巢
运行应用程序 2 小时后,它给出了错误。
我猜需要调整配置,但不知道是哪一个。如果有人知道发生了什么并提出一些帮助信息,我将不胜感激。
提前致谢。
postgresql - 在 pyspark 中使用 jdbc jar
我需要从 pyspark 中的 postgres sql 数据库中读取数据。我知道之前已经问过这个问题,例如这里、这里和许多其他地方,但是,那里的解决方案要么使用本地运行目录中的 jar,要么手动将其复制给所有工作人员。
我下载了 postgresql-9.4.1208 jar 并将其放在 /tmp/jars 中。然后我继续使用 --jars 和 --driver-class-path 开关调用 pyspark:
在 pyspark 里面我做了:
但是,虽然使用 --jars 和 --driver-class-path 对我创建的 jar 工作正常,但它对 jdbc 失败,并且我从工作人员那里得到了一个异常:
如果我手动将 jar 复制到所有工作人员并添加 --conf spark.executor.extraClassPath 和 --conf spark.driver.extraClassPath,它确实有效(使用相同的 jar)。顺便说一句,文档建议使用已弃用的 SPARK_CLASSPATH 实际上添加了这两个开关(但具有防止使用我需要做的 --jars 选项添加其他 jars 的副作用)
所以我的问题是:jdbc 驱动程序有什么特别之处使它无法工作,如何添加它而无需手动将其复制给所有工作人员。
更新:
我做了更多的查找并在文档中找到了这一点:“JDBC 驱动程序类必须对客户端会话和所有执行程序上的原始类加载器可见。这是因为 Java 的 DriverManager 类进行了安全检查,导致它忽略所有驱动程序在打开连接时对原始类加载器不可见。一种方便的方法是修改所有工作节点上的 compute_classpath.sh 以包含您的驱动程序 JAR。”。
问题是我似乎找不到 computer_classpath.sh 也不明白原始类加载器的含义。
python - Spark-submit:未定义的函数 parse_url
如果我们使用 spark-sql throw sql-client(通过 thrift 服务器)、IPython、pyspark-shell,函数parse_url总是可以正常工作,但它不能在 throw spark-submit模式下工作:
错误是:
所以,我们在这里使用解决方法:
请问,这个问题有什么帮助吗?
apache-spark - 有没有办法在 pyspark 1.3.1 中不将数据帧转换为 rdd 来生成行号?
我正在使用 pyspark 1.3.1,我需要为数据框中的每一行生成唯一的 ID/编号。
由于 Pyspark 版本:1.3.1 不提供窗口函数,因此我无法使用 rownumber 函数。
如何在没有 rownumber 函数且不将数据帧转换为 RDD 的情况下引入 rownumber?
google-bigquery - 如何将分区数据写入文件名中具有分区值的文件?
我按月从 RDBMS 中卸载了一堆数据,并根据该月将其加载到 Google Cloud Storage (GCS) 中。然后,我将整个数据集读入 dataproc 集群上的 pyspark 数据帧中,并希望根据天而不是月份将其重新写入 GCS。我已成功写入云存储,其中每个文件仅包含某个日期,但未能有效地根据该日期命名文件或目录。下面的代码做了我想做的事,但效率很低。我也知道理论上我可以通过使用镶木地板文件来解决这个问题,但我的要求是写成 CSV。最终,我想每天将这些数据加载到 bigquery 中,如果有一个更容易的解决方案(然后我可以将每个每天的表导出到文件中)。
所以说我读入的数据有日期 ['2014-01-01', '2014-01-02', '2014-01-03'] 我希望生成的文件/目录看起来像这样:
gs://buck_1/AUDIT/2014-01-01/part-1
gs://buck_1/AUDIT/2014-01-01/part-2
gs://buck_1/AUDIT/2014-01-01/part- 3
gs://buck_1/AUDIT/2014-01-01/part-4
gs://buck_1/AUDIT/2014-01-02/part-1
gs://buck_1/AUDIT/2014-01-02/part-2
gs://buck_1/AUDIT/2014-01-02/part- 3
gs://buck_1/AUDIT/2014-01-02/part-4
gs://buck_1/AUDIT/2014-01-03/part-1
gs://buck_1/AUDIT/2014-01-03/part-2
gs://buck_1/AUDIT/2014-01-03/part- 3
gs://buck_1/AUDIT/2014-01-03/part-4