当前位置: 首页 > 知识库问答 >
问题:

在带有镶木地板文件的Impala表中键入转换

洪凯定
2023-03-14

我无法使用镶木地板文件将列的类型从字符串更改为Impala的int

使用:

改变表DATABASE.TABLE改变COL INT(从字符串到int)

< code >更改表数据库。表格更改列列字符串(从int到string)

读取数据时产生错误:

文件x的“db.table.col”列具有不兼容的拼花架构。列类型:INT,拼花模式:可选byte_array col[i:1 d:1 r:0]

读了这个留档,我明白:

  • TINYINT到SMALLINT/INT:正常
  • SMALLINT到INT:ok

考虑以下事项:

列的任何其他类型转换都会在查询期间产生转换错误

这是否意味着除了上述类型转换之外,所有类型转换都是可能的(查询通过),但在查询时会引发错误?

其他信息:

    < li >在计算统计信息(或选择)之前刷新表格并不能解决问题。 < li >更改列类型后使元数据无效也是如此。 < li >问题出现在Hue或使用python脚本时。 < li >我使用的是impalad版本2.12.0-cdh5.16.2版 < li >该错误与第一个parquet文件有关(在更新类型之前包含表格内容的文件)。< img src = " https://I . stack . imgur . com/hqkd 4 . png " alt = "在此输入图像描述" >

共有1个答案

花健
2023-03-14

由于您正在更改数据类型(元数据),因此您需要使元数据失效,以便impala强制查找元数据而不使用旧的元数据。

所以,在你的change语句之后,请使用它来修复错误。Impala将在查询时使用最新的元数据,SQL将正常工作。

INVALIDATE METADATA mytable
 类似资料:
  • 问题内容: 有没有办法从Java创建镶木地板文件? 我的内存中有数据(java类),我想将其写入一个Parquet文件中,以便以后从apache-drill中读取它。 有没有简单的方法可以做到这一点,例如将数据插入sql表? 得到它了 谢谢您的帮助。 结合答案和此链接,我能够创建一个实木复合地板文件并用钻头将其读回。 问题答案: 不建议使用ParquetWriter的构造函数(1.8.1),但不建

  • 虽然 Impala 比 Hive 快得多,但我们之所以使用 Hive,是因为它支持复杂(嵌套)数据类型,如数组和映射。 我注意到,从CDH5.5开始,Impala现在支持复杂的数据类型。由于在黑斑羚中也可以运行蜂巢UDF,我们可能可以在黑斑中做任何我们想做的事情,但要快得多。这是个好消息! 当我浏览文档时,我看到Impala希望以镶木地板格式存储数据。我的数据,在原始形式中,恰好是一个两列的CSV

  • 我有一个数据帧,它是由运行特定日期的每日批处理创建的,然后保存在HDFS(Azure Data Lake Gen 2)中。 它是用这样的东西保存的 如您所见,我没有对数据帧进行分区,因为它只包含一个日期。 例如,第一天的第一个文件将存储在文件夹中 交易/2019/08/25 然后第二天,它就会在文件夹里 贸易/2019/08/26 问题是,当所有数据都放好后,日期上的过滤器谓词是否仍会被按下,HD

  • 我有一个超过10亿行的DataFrame(df) 从上面的命令中,我了解到我的100个工作节点集群(spark 2.4.5)中只有5个工作节点将执行所有任务。使用聚结剂(5)需要7小时才能完成。 我应该尝试< code >重新分区而不是< code >联合? 有没有一种更快速/高效的方法来写出128 MB大小的拼花文件,或者我需要首先计算数据帧的大小来确定需要多少分区。 例如,如果我的数据帧大小为

  • 我的 hdfs 中有 Parquet 文件。我想将这些镶木地板文件转换为csv格式

  • 我对火花有点陌生。在我的spark calc完成后,我目前在amazon s3上看到一些奇怪的缓慢的拼花。 写一个小文件需要1.8小时(写时有2个分区) 我用一个不同的更大的文件(更多行更多列)运行了相同的spark calc(编写时有3个分区) 写入调用本身: