- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是初学者,刚开始使用spark。我在 pySpark (Scala 2.11.8) 中执行了以下查询
dic = [{"a":1},{"b":2},{"c":3}]
spark.parallelize(dic).toDF()
df.show()
然后产生:
+----+
| a|
+----+
| 1|
|null|
|null|
+----+
而当我执行 spark.createDataFrame(dic).show()
时它会产生
+----+----+----+
| a| b| c|
+----+----+----+
| 1|null|null|
|null| 2|null|
|null|null| 3|
+----+----+----+
基于 Unable to use rdd.toDF() but spark.createDataFrame(rdd) Works似乎 toDF() 是 createDataFrame 的语法糖,但该帖子并未详细说明内部发生的情况导致了差异。只是想知道是否有人可以解释上述结果背后的原因。
谢谢!
最佳答案
首先 - 如果您检查日志,您将看到以下警告:
UserWarning: inferring schema from dict is deprecated,please use pyspark.sql.Row instead warnings.warn("inferring schema from dict is deprecated,
这是有原因的。
对观察到的行为的解释很简单——本地集合的模式推理逻辑不同(我们可以安全地假设我们可以在可忽略的时间内扫描所有记录)和 RDD
(这个假设必然为真)。
后者使用 _inferSchema
,它对数据进行采样以进行推理。如果未提供采样率,it uses only the first row .相反,对于本地集合,Spark scans all records .
这里要注意的是要阅读警告而不是依赖模式推断(这通常是不可靠且昂贵的)。
关于apache-spark - pyspark 的 toDF() 与 createDataFrame() 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49728675/
此代码从给定列表创建数据框: 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
我是一名优秀的程序员,十分优秀!