读取分区镶木地板时,Spark 错误地将以“d”或“f”结尾的分区名称解释为数字

2024-02-29

我在用着spark.read.parquet()从分区中组织镶木地板文件的文件夹中读取。当分区名称以以下结尾时,结果将是错误的f or d。显然,Spark 会将它们解释为数字而不是字符串。我创建了一个最小的测试用例,如下所示来重现该问题。

df = spark.createDataFrame([
            ('9q', 1),
            ('3k', 2),
            ('6f', 3),
            ('7f', 4),
            ('7d', 5),
     ],
     schema='foo string, id integer'
)
df.write.partitionBy('foo').parquet('./tmp_parquet', mode='overwrite')
read_back_df = spark.read.parquet('./tmp_parquet')
read_back_df.show()

The read_back_df will be

+---+---+                                                                       
| id|foo|
+---+---+
|  1| 9q|
|  4|7.0|
|  3|6.0|
|  2| 3k|
|  5|7.0|
+---+---+

通知分区6f/7f/7d变成6.0/7.0/7.0.

Spark版本是2.4.3。


您看到的行为是预期的。

来自Spark文档 https://spark.apache.org/docs/2.4.3/sql-data-sources-parquet.html#partition-discovery:

请注意,分区列的数据类型是自动推断的。

您可以通过设置禁用此功能spark.sql.sources.partitionColumnTypeInference.enabled为假。

以下代码在读取 parquet 文件时保留字符串:

spark.conf.set("spark.sql.sources.partitionColumnTypeInference.enabled", False)
read_back_df = spark.read.parquet('./tmp_parquet')
read_back_df.show()

prints

+---+---+                                                                       
| id|foo|
+---+---+
|  3| 6f|
|  1| 9q|
|  4| 7f|
|  2| 3k|
|  5| 7d|
+---+---+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取分区镶木地板时,Spark 错误地将以“d”或“f”结尾的分区名称解释为数字 的相关文章

  • 将 Spark 数据框中的时间戳转换为日期

    我见过 这里 如何将DataFrame中的时间戳转换为日期格式 https stackoverflow com questions 40656001 how to convert timestamp to date format in da
  • 如何过滤 pyspark 列表中值的列?

    我有一个数据框原始数据 我必须在 X 列上应用值 CB CI 和 CR 的过滤条件 所以我使用了下面的代码 df dfRawData filter col X between CB CI CR 但我收到以下错误 Between 恰好需要 3
  • Spark 执行器 STDOUT 到 Kubernetes STDOUT

    我在 Spark Worker 中运行的 Spark 应用程序将执行程序日志输出到特定文件路径 worker home directory app xxxxxxxx 0 stdout I used log4j properties将日志从
  • 如何使用 Scala 在 Spark 中漂亮地打印 JSON 数据帧?

    我有一个数据帧 我想将其作为有效的 json 写入 json 文件 我当前的代码如下所示 val df DataFrame myFun df toJSON saveAsTextFile myFile json 输出的格式为 如何将文件内容组
  • 如何在 Mac 上使用 homebrew 安装 apache-spark 2.3.3

    brew install apache spark只安装最新版本的 Spark 2 4 和 brew search apache spark没有给出任何其他选项 有没有办法用自制程序安装旧版本的 Spark Type brew tap ed
  • pyspark:将多个数据帧字段传递给 udf

    我是 Spark 和 Python 的新手 任何帮助表示赞赏 我有一个 UDF 并使用 US zipcd 纬度和经度创建了一个 Spark 数据框 UDF import math def distance origin destinatio
  • ';'预期但发现“导入” - Scala 和 Spark

    我正在尝试使用 Spark 和 Scala 来编译一个独立的应用程序 我不知道为什么会收到此错误 topicModel scala 2 expected but import found error import org apache sp
  • 如何将模型从 ML Pipeline 保存到 S3 或 HDFS?

    我正在尝试保存 ML Pipeline 生成的数千个模型 正如答案中所示here https stackoverflow com questions 32121046 run 3000 random forest models by gro
  • 使用 pyspark 计算所有可能的单词对

    我有一个文本文档 我需要找到整个文档中重复单词对的可能数量 例如 我有下面的word文档 该文档有两行 每行用 分隔 文档 My name is Sam My name is Sam My name is Sam My name is Sa
  • Spark (Python) 中的 Kolmogorov Smirnov 测试不起作用?

    我正在 Python Spark ml 中进行正态性测试 看到了我的结果think是一个错误 这是设置 我有一个标准化的数据集 范围 1 到 1 当我做直方图时 我可以清楚地看到数据不正常 gt gt gt prices norm hist
  • 通过过滤对 Pyspark Dataframe 进行分组

    我有一个数据框如下 cust id req req met 1 r1 1 1 r2 0 1 r2 1 2 r1 1 3 r1 1 3 r2 1 4 r1 0 5 r1 1 5 r2 0 5 r1 1 我必须观察客户 看看他们有多少要求 看看
  • 过滤字符串上的 Spark DataFrame 包含

    我在用火花1 3 0 http spark apache org releases spark release 1 3 0 html and 火花阿夫罗1 0 0 https github com databricks spark avro
  • Spark日期格式问题

    我在火花日期格式中观察到奇怪的行为 实际上我需要转换日期yy to yyyy 日期转换后 日期应为 20yy 我尝试过如下 2040年后失败 import org apache spark sql functions val df Seq
  • 如何将模型结果保存到文本文件?

    我正在尝试将从模型生成的频繁项集保存到文本文件中 该代码是 Spark ML 库中 FPGrowth 示例的示例 Using saveAsTextFile直接在模型上写入 RDD 位置而不是实际值 import org apache spa
  • 更改 Spark SQL 中的 Null 顺序

    我需要能够按升序和降序对列进行排序 并且还允许空值位于第一个或空值位于最后一个 使用 RDD 我可以将 sortByKey 方法与自定义比较器结合使用 我想知道是否有使用 Dataset API 的相应方法 我了解如何将 desc asc
  • 带有安全 Kafka 抛出的 Spark 结构化流:无权访问组异常

    为了在我的项目中使用结构化流 我正在 hortonworks 2 6 3 环境上测试 Spark 2 2 0 和 Kafka 0 10 1 与 Kerberos 的集成 我正在运行下面的示例代码来检查集成 我能够在 Spark 本地模式下的
  • pyspark flatmat 错误:TypeError:“int”对象不可迭代

    这是我书中的示例代码 from pyspark import SparkConf SparkContext conf SparkConf setMaster spark chetan ThinkPad E470 7077 setAppNam
  • Spark:如何使用crossJoin

    我有两个数据框 df1有 100000 行并且df2有 10000 行 我想创建一个df3这是两者的交叉连接 val df3 df1 crossJoin df2 这将产生 10 亿行 尝试在本地运行它 但似乎需要很长时间 您认为本地可以实现
  • Scala:什么是 CompactBuffer?

    我试图弄清楚 CompactBuffer 的含义 和迭代器一样吗 请解释其中的差异 根据 Spark 的文档 它是 ArrayBuffer 的替代方案 可以提供更好的性能 因为它分配的内存更少 以下是 CompactBuffer 类文档的摘
  • 如何将 Pyspark Dataframe 标题设置到另一行?

    我有一个如下所示的数据框 col1 col2 col3 id name val 1 a01 X 2 a02 Y 我需要从中创建一个新的数据框 使用 row 1 作为新的列标题并忽略或删除 col1 col2 等行 新表应如下所示 id na

随机推荐

  • 如何在 IPython 笔记本中播放本地视频?

    我有一个本地视频文件 avi 但可以转换 我想向客户端展示该文件 即它是私有的 无法发布到网络 但我不知道如何在 IPython 笔记本中播放它 经过一番谷歌搜索后 似乎 HTML5 视频标签可能是可行的方法 但我不知道任何 html 无法
  • 部署应用程序时如何避免安装“无限强度”JCE策略文件?

    我有一个使用 256 位 AES 加密的应用程序 Java 不支持该加密 我知道为了让它正常工作 我在安全文件夹中安装了 JCE 无限强度 jar 这对我作为开发人员来说很好 我可以安装它们 我的问题是 由于此应用程序将被分发 最终用户很可
  • 获取我在 Sql Server 中更新的行的 Id

    我正在尝试返回在 sql 中更新的行的 Id UPDATE ITS2 UserNames SET AupIp AupIp WHERE Customer ID TCID AND Handle ID ID SELECT ERROR AS Err
  • 为什么第一个 WCF 客户端调用很慢?

    我试图弄清楚为什么客户端应用程序启动后的第一个 WCF 调用比第二个调用花费更多的时间 我做了什么来测试 实现了简单的自托管 WCF 服务器和控制台客户端 服务器已预热 在运行测试之前我运行它并调用方法几次 绑定是basicHttpBind
  • 重新启动 erlang 进程并保留状态

    我有一个主管进程 它启动多个子进程 目前 当孩子死亡时 我会生成一个具有新 Pid 的新进程 这意味着我丢失了刚刚死亡的子进程的状态信息 我希望我的客户始终使用相同的标识符与子进程进行通信 尽管子进程可能会死亡并由主管重新启动 我正在考虑使
  • 无法将类型“UnsafePointer”的值转换为预期参数类型“UnsafePointer<_>”

    我正在 OS X 的 Swift 中使用外部 C 库 我得到一个值 cda 它在 C 中定义为double 它是一个指向双数组的指针 当导入到 Swift 中时 它会将类型识别为 UnsafeMutablePointer 我正在尝试将此指针
  • 如何在 mpandroidchart 中设置 x 标签和 y 标签的值

    我正在使用 mpandroidchart android 库 我正在实施折线图 这里我可以自己设置x和y标签吗 目前 它正在根据提供给图表的数据集添加值 您能对此提供一些想法吗 您必须在轴对象上使用格式化程序 有两种格式化程序 XAxisV
  • 带有 NULL 的列不能用于 Bigquery 中的联合

    我正在工作中构建动态 sql 生成器 并且在联合查询方面遇到困难 当我运行以下查询时 SELECT NULL AS field 列类型是BOOL默认情况下 它可以用于与整数类型列的联合 如下所示 SELECT field FROM SELE
  • 如何以编程方式“重新启动”Android 应用程序?

    首先 我知道不应该真正终止 重新启动 Android 上的应用程序 在我的用例中 我想在服务器向客户端发送一条特定信息的特定情况下对我的应用程序进行出厂重置 用户只能使用应用程序的一个实例登录服务器 即不允许使用多个设备 如果另一个实例获得
  • 致命错误:在非对象 codeigniter $query->num_rows()==1) 上调用成员函数 where() [重复]

    这个问题在这里已经有答案了 可能的重复 CodeIgniter 在非对象上调用成员函数 select https stackoverflow com questions 8322124 codeigniter call to a membe
  • 在 CQRS http 应用程序中实现 Saga/Process Manager

    按照这个例子 https msdn microsoft com en us library jj591569 aspx https msdn microsoft com en us library jj591569 aspx 图3 它如何适
  • ofstream 无法在 Linux 上运行

    我有一个简单的测试代码 include
  • 递归排列列表

    我想通过递归来解决问题 我有一个给定的字母列表 我想要这些字母的所有排列 直到达到给定的长度 var letters A B C D E F function myRekursion alphabet n if n gt 0 for var
  • 高效利用Android资源

    我试图弄清楚如何有效地使用 Android 的资源系统 既提供最高分辨率的资源 又保持较小的 apk 大小 我的资源文件夹 drawable normal mdpi drawable normal hdpi drawable large m
  • 使用 OpenMP 在两个内核上设置线程关联

    我使用的是C程序 在Windows7上用gcc 4 9 2编译 使用OpenMP 4 0 我的电脑是双核 四个线程 我想使用线程亲和力传播并使用放置在不同核心上的 2 个线程 因此 当我从 DOS 设置环境变量时 设置 OMP NUM TH
  • Xamarin-Android 和 UWP 之间的蓝牙连接

    在相当多的时间里 我一直在努力寻找一个可行的解决方案来通过 IP 连接或蓝牙连接 Android 设备和 UWP 应用程序 在 PC 上 主要问题是找到一组足够简单但又保证可以工作的代码或示例 这样我的努力就不会白费 这种情况已经持续了一个
  • 为什么要加密用户密码? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么不存储原始密码 https stackoverflow com questions 3107810 why arent original passwords stored 如果密码是数据中最不有
  • Laravel 设置无法打开流

    我正在尝试设置 laravel 但事实证明它是正确的 我从 github 克隆了它 还使用 Composer 克隆了 Laravel 这两种技术都可以工作 这很好 因为它是我真正想学习的东西 比我想象的简单 然而 当我尝试导航到名为 iPr
  • Rowset不支持向后滚动

    我正在尝试使用以下代码查询 MySQL 数据库 declare the variables Dim Connection Dim Recordset Dim SQL declare the SQL statement that will q
  • 读取分区镶木地板时,Spark 错误地将以“d”或“f”结尾的分区名称解释为数字

    我在用着spark read parquet 从分区中组织镶木地板文件的文件夹中读取 当分区名称以以下结尾时 结果将是错误的f or d 显然 Spark 会将它们解释为数字而不是字符串 我创建了一个最小的测试用例 如下所示来重现该问题 d