- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个形式为 RDD[(string, List(Tuple))]
的 RDD ,如下所示:
[(u'C1589::HG02922', [(83779208, 2), (677873089, 0), ...]
当尝试运行以下代码将其转换为数据帧时,spark.createDataFrame(rdd)
工作正常但是 rdd.toDF()
失败。
vector_df1 = spark.createDataFrame(vector_rdd) # Works fine.
vector_df1.show()
+--------------+--------------------+
| _1| _2|
+--------------+--------------------+
|C1589::HG02922|[[83779208,2], [6...|
| HG00367|[[83779208,0], [6...|
| C477::HG00731|[[83779208,0], [6...|
| HG00626|[[83779208,0], [6...|
| HG00622|[[83779208,0], [6...|
...
vector_df2 = vector_rdd.toDF() # Tosses the error.
抛出的错误是:
Traceback (most recent call last):
File "/tmp/7ff0f62d-d849-4884-960f-bb89b5f3dd80/ml_on_vds.py", line 47, in <module>
vector_df2 = vector_rdd.toDF().show()
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/session.py", line 57, in toDF
File "/usr/lib/spark/python/lib/py4j-0.10.3-src.zip/py4j/java_gateway.py", line 1124, in __call__
File "/usr/lib/spark/python/lib/py4j-0.10.3-src.zip/py4j/java_gateway.py", line 1094, in _build_args
File "/usr/lib/spark/python/lib/py4j-0.10.3-src.zip/py4j/protocol.py", line 289, in get_command_part
AttributeError: 'PipelinedRDD' object has no attribute '_get_object_id'
ERROR: (gcloud.dataproc.jobs.submit.pyspark) Job [7ff0f62d-d849-4884-960f-bb89b5f3dd80] entered state [ERROR] while waiting for [DONE].
有人遇到过类似的问题吗? .toDF()
只是 createDataFrame()
的简单包装所以我不明白为什么它会失败。我已在运行时验证我使用的是 Spark 2.0.2。
# Imports
from pyspark.sql import SparkSession
from pyspark.sql.functions import udf, hash
from pyspark.sql.types import *
from pyspark.ml.clustering import KMeans
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import StringIndexer
from hail import *
# SparkSession
spark = (SparkSession.builder.appName("PopulationGenomics")
.config("spark.sql.files.openCostInBytes", "1099511627776")
.config("spark.sql.files.maxPartitionBytes", "1099511627776")
.config("spark.hadoop.io.compression.codecs", "org.apache.hadoop.io.compress.DefaultCodec,is.hail.io.compress.BGzipCodec,org.apache.hadoop.io.compress.GzipCodec")
.getOrCreate())
根据请求,生成错误的更多代码:
vector_rdd = (indexed_df.rdd.map(lambda r: (r[0], (r[3], r[2])))
.groupByKey()
.mapValues(lambda l: Vectors.sparse((max_index + 1), list(l))))
vector_df = spark.createDataFrame(vector_rdd, ['s', 'features']) # Works
vector_df1 = vector_rdd.toDF()
vector_df1.show() # Fails
indexed_df
是架构的 DataFrame:
StructType(List(StructField(s,StringType,true),StructField(variant_hash,IntegerType,false),StructField(call,IntegerType,true),StructField(index,DoubleType,true)))
看起来像......
+--------------+------------+----+-----+
| s|variant_hash|call|index|
+--------------+------------+----+-----+
|C1046::HG02024| -60010252| 0|225.0|
|C1046::HG02025| -60010252| 1|225.0|
|C1046::HG02026| -60010252| 0|225.0|
|C1047::HG00731| -60010252| 0|225.0|
|C1047::HG00732| -60010252| 1|225.0|
|C1047::HG00733| -60010252| 0|225.0|
|C1048::HG02024| -60010252| 0|225.0|
|C1048::HG02025| -60010252| 1|225.0|
|C1048::HG02026| -60010252| 0|225.0|
|C1049::HG00731| -60010252| 0|225.0|
|C1049::HG00732| -60010252| 1|225.0|
|C1049::HG00733| -60010252| 0|225.0|
|C1050::HG03006| -60010252| 0|225.0|
|C1051::HG03642| -60010252| 0|225.0|
|C1589::HG02922| -60010252| 2|225.0|
|C1589::HG03006| -60010252| 0|225.0|
|C1589::HG03052| -60010252| 2|225.0|
|C1589::HG03642| -60010252| 0|225.0|
|C1589::NA12878| -60010252| 1|225.0|
|C1589::NA19017| -60010252| 1|225.0|
+--------------+------------+----+-----+
最佳答案
toDF
方法在 1.x 版本中在 SparkSession
和 SQLContex
下执行。所以
spark = SparkSession(sc)
hasattr(rdd, "toDF")
如果您使用的是 scala,则需要导入 import Spark.implicits._
,其中 Spark 是您创建的 SparkSession 对象。
希望这有帮助!
关于apache-spark - 无法使用 rdd.toDF() 但spark.createDataFrame(rdd) 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810603/
此代码从给定列表创建数据框: sample_one = [(0, 'mouse'), (1, 'black')] sample_two = [(0, 'cat'), (1, 'tabby'), (2,
以下代码显示了如何构建数据帧。可以看出数据框包含两列。每列在最后一行都有整数和一个字符串。 据我所知,createDataFrame必须分析列的数据类型(并因此分析行)。然后,假设一种数据类型可以包含
我是 Spark、SparkR 以及所有 HDFS 相关技术的新手。我最近安装了 Spark 1.5.0 并使用 SparkR 运行一些简单的代码: Sys.setenv(SPARK_HOME="/p
假设我正在从没有模式的列表中创建一个数据框: data = [Row(c=0, b=1, a=2), Row(c=10, b=11, a=12)] df = spark.createDataFrame
在此示例中,我从 createDataFrame 调用内部收到 StackOverflowError。它起源于涉及 Java 类型推断的 Scala 代码,该代码在无限循环中调用自身。 final E
尝试从 RDD 创建 DataFrame 时遇到错误。 我的代码: from pyspark import SparkConf, SparkContext from pyspark import sq
我正在使用 Jupyter 笔记本对 pySpark 进行分析。我的代码最初使用 sqlContext = SQLContext(sc) 构建数据帧,但现在我已切换到 HiveContext,因为我将
我在spark数据帧中遇到了一个非常奇怪的错误,该错误导致将字符串作为时间戳进行评估。 这是我的设置代码: from datetime import datetime from pyspark.sql
我是初学者,刚开始使用spark。我在 pySpark (Scala 2.11.8) 中执行了以下查询 dic = [{"a":1},{"b":2},{"c":3}] spark.paralleliz
这个问题已经有答案了: 'PipelinedRDD' object has no attribute 'toDF' in PySpark (2 个回答) 已关闭 5 年前。 我有一个形式为 RDD[(
谁能举个java实现的例子 public DataFrame createDataFrame(java.util.List data,java.lang.Class beanClass)功能,如 Sp
以前关于此错误的问题的答案是您需要做的就是更新您的 Spark 版本。我刚刚删除了早期版本的 Spark,并安装了为 Hadoop 2.6.0 构建的 Spark 1.6.3。 我试过这个: s_df
我目前正在使用 val df=longLineageCalculation(....) val newDf=sparkSession.createDataFrame(df.rdd, df.schema
按照这篇文章 (https://spark.apache.org/docs/latest/sparkr.html#from-local-data-frames) 中的说明,我正在使用以下代码创建一个
在花了很多时间弄清楚为什么会出现以下错误之后 pyspark: TypeError: IntegerType can not accept object in type 在尝试基于行和架构创建数据框
我试图在 R 中创建一个数据框,从 Java 中的 ArrayList 获取数据。 下面的代码似乎是官方的 JRI 测试套件(see this link)但是它甚至不能编译,例如在第一条语句中 RLi
我们正在尝试集成 apache ignite 和 apache Spark,但出现以下错误。 Maven 配置 4.0.0 com.me igniteclient1
在独立应用程序中(在 java8、Windows 10 上运行,使用 Spark-xxx_2.11:2.0.0 作为 jar 依赖项),下一个代码给出错误: /* this: */ Dataset l
我是一名优秀的程序员,十分优秀!