可空字段在写入 Spark Dataframe 时发生更改

2024-04-04

以下代码从 parquet 文件读取 Spark DataFrame 并写入另一个 parquet 文件。将 DataFrame 写入新的 Parquet 文件后,ArrayType 中的 Nullable 字段的 DataType 会发生更改。

Code:

    SparkConf sparkConf = new SparkConf();
    String master = "local[2]";
    sparkConf.setMaster(master);
    sparkConf.setAppName("Local Spark Test");
    JavaSparkContext sparkContext = new JavaSparkContext(new SparkContext(sparkConf));
    SQLContext sqc = new SQLContext(sparkContext);
    DataFrame dataFrame = sqc.read().parquet("src/test/resources/users.parquet");
    StructField[] fields = dataFrame.schema().fields();
    System.out.println(fields[2].dataType());
    dataFrame.write().mode(SaveMode.Overwrite).parquet("src/test/resources/users1.parquet");


    DataFrame dataFrame1 = sqc.read().parquet("src/test/resources/users1.parquet");
    StructField [] fields1 = dataFrame1.schema().fields();
    System.out.println(fields1[2].dataType());

Output:

ArrayType(IntegerType,false)
ArrayType(IntegerType,true)

Spark版本是:1.6.2


对于 Spark 2.4 或更早版本,从 Spark sql 写入的所有列都可以为空。引用官方指南 http://spark.apache.org/docs/2.4.0/sql-data-sources-parquet.html

Parquet 是一种列式格式,许多其他数据处理系统都支持该格式。 Spark SQL 支持读取和写入 Parquet 文件,自动保留原始数据的架构。写入 Parquet 文件时,出于兼容性原因,所有列都会自动转换为可为空。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可空字段在写入 Spark Dataframe 时发生更改 的相关文章

随机推荐

  • Lambda 不支持 NLTK 文件大小

    我正在编写一个 python 脚本来分析一段文本并以 JSON 格式返回数据 我正在使用 NLTK 来分析数据 基本上 这是我的流程 创建端点 API 网关 gt 调用我的 lambda 函数 gt 返回所需数据的 JSON 我编写了脚本
  • 查找存储为 Ahnentafel 数组的二进制最大堆的最小元素

    我有一个二进制最大堆 顶部的最大元素 我需要通过摆脱smallest每次我达到 20 个元素时 二叉堆存储在一个数组中 节点 i 的子节点为 2 i 和 2 i 1 i 从零开始 在任何时候 堆都有 n elements 个元素 介于 0
  • 向 MVC 路由添加冗余信息

    当您遇到这个问题时 您会注意到问题的标题位于地址栏中 以及您单击到达此处的链接 我不确定确切的术语 因此很难搜索 但我该如何做类似的事情 也就是说 如何将数据添加到纯粹用于显示 搜索引擎的地址栏 Thanks 以 Stack Overflo
  • 如何在 Ruby 中选择给定范围内的数组元素?

    我有一个数组 比方说 有 500 个元素 我知道我可以通过以下方式选择前 100 个 first 100 我的问题是如何选择 100 到 200 之间的元素 您可以在数组下标中使用范围 arr 100 200
  • 如何通过 mpi c++ 发送布尔数据类型?

    我是 C 新手 尝试通过 MPI 发送 bool 数据类型 但 C 不支持此数据类型 我试着做到了MPI BYTE and MPI INT但它什么也没打印 include
  • “volatile char *”类型的参数与“const char *”类型的参数不兼容

    我有一个函数 其原型如下 void foo const char data 在我的代码的其他地方 我声明了一个全局变量 如下所示 volatile char var 100 每当我尝试这样做时 foo var 编译器会抛出以下错误消息 vo
  • 删除 numpy 数组中的屏蔽元素

    我有一些包含屏蔽元素的数组 来自Numpy MaskedArray e g data 0 1 masked 3 masked 5 面具不遵循常规模式的地方 我想遍历数组并简单地删除所有被屏蔽的元素 最终得到 data 0 1 3 5 我尝试
  • 调试部署的azure应用程序

    是否可以附加到已部署的 Azure 应用程序 我希望能够单步执行代码 以便可以查看在对我的 Web 角色操作之一的请求中设置了哪些值 我环顾四周 唯一的例子似乎是当天蓝色应用程序在本地计算机上运行时进行调试 允许在云中使用 IntelliT
  • Objective-C 中整数的除法和四舍五入

    我有 2 个整数 如何将一个除以另一个然后再四舍五入 如果你的整数是A and B你想要 ceil A B 只需计算 A B 1 B
  • Spyder中的runfile是什么意思

    尝试在 WinPython Spyder 中使用 PyPDF2 时 我无法解释错误消息 错误信息 在 3 中 runfile C Users User Downloads WPy64 3720 pdf2text py wdir C User
  • 如何从access数据库中查询表结构?

    我想用 C 获取 Access 数据库中所有表和 odbc 数据源的结构 所以我尝试了这段代码 string text var tables GetApp CurrentData AllTables for int i 0 i lt tab
  • 使用来自另一个 Pandas 数据框的信息填充 Pandas 数据框

    我有一个 Pandas 数据框 其中包含以下信息 index year month day symbol transaction nr shares 2011 01 10 2011 1 10 AAPL Buy 1500 2011 01 13
  • 具有集群和自定义视图标记的 Google 地图在放大和缩小时滞后太多

    我要加载GoogleMap用自定义视图代替GMSMarker并想展示聚类 我已经做到了 但我在放大或缩小地图时面临着滞后和内存使用情况 我已加载自定义视图GMSMarker信息视图 这是我的代码 class InitialMapViewCo
  • 使用 3d 变换矩阵

    在人工智能课程中 我们有一个机器人 它的手臂有 7 个关节 每个关节可以向不同的方向旋转 我需要知道最后的结局在哪里 我一直在尝试进行 3d 矩阵乘法 它适用于一个关节 但一旦我添加另一个关节 它就与我使用 Java3D api 制作的模型
  • 有没有办法直接访问 CSS 网格中自动放置元素的实际网格坐标?

    还有人问了类似的问题here https stackoverflow com questions 51327802 how to get the grid coordinates of an element using javascript
  • R 取子集后得到数据框的原始索引

    子集化后是否可以获取数据框的原始索引 它存储在某个地方 但我不确定在哪里以及如何访问它 我知道如果这是算法设计的一部分 会有更好的解决方案 我只是好奇是否有人知道是否可能 示例场景 df data frame atr1 integer at
  • 保留元素的排序列表,按该元素外部的属性排序

    我有一个 管理器 类维护对象列表 每个对象都有一定的 位置 但他们不知道这一点 只有管理者知道这一点 管理器必须为每个对象分配一个位置 并维护根据此 外部属性 排序的对象列表 请注意 对象的位置可以随时更改 理想情况下 我应该能够立即获取位
  • 在JavaScript中获取两个日期之间的年、月、日差异[重复]

    这个问题在这里已经有答案了 好吧 我在这里发现了很多类似的问题 试图获取两个日期之间的年 月和日的差异 但没有答案可以满足我的要求 所以我写了一些东西来计算 它似乎有效 但也许这里的一些专家可以进行更正或帮助使这更简单 您可以使用momen
  • Magento 高级配置文件导出 - 将 URL 添加到 IMAGE 路径

    刚使用 Magento 几周 就成功地使用了高级导出配置文件 非常方便 我想做的是将 url 值添加到输出列之一 特别是图像 url 我想将 url 附加到路径输出的开头 有人可以帮忙吗
  • 可空字段在写入 Spark Dataframe 时发生更改

    以下代码从 parquet 文件读取 Spark DataFrame 并写入另一个 parquet 文件 将 DataFrame 写入新的 Parquet 文件后 ArrayType 中的 Nullable 字段的 DataType 会发生