我有来自以管道分隔的源系统的数据。选择管道而不是逗号是因为人们认为字段中没有出现管道,而已知逗号确实存在。然而,在将这些数据摄取到 Hive 之后,我们发现很少有字段实际上包含管道字符。
由于限制,我们无法从源重新生成以逃避分隔符或以通常的方式更改分隔符。但是,我们有用于创建 Hive 表的元数据。我们是否可以使用问题字段周围的字段知识来重新处理我们这边的文件以转义它或在将数据重新加载到 Hive 之前更改文件分隔符?
我有来自以管道分隔的源系统的数据。选择管道而不是逗号是因为人们认为字段中没有出现管道,而已知逗号确实存在。然而,在将这些数据摄取到 Hive 之后,我们发现很少有字段实际上包含管道字符。
由于限制,我们无法从源重新生成以逃避分隔符或以通常的方式更改分隔符。但是,我们有用于创建 Hive 表的元数据。我们是否可以使用问题字段周围的字段知识来重新处理我们这边的文件以转义它或在将数据重新加载到 Hive 之前更改文件分隔符?
因此,您的一些行将因此导致一列或多列的列数过多。这很容易检测到,但更难推断错误在哪里——哪两列实际上是一列?哪个分隔符不是分隔符?
在某些情况下,您可以使用元数据,因为它可以帮助您了解何时对列的解释不正确。例如,如果只有一列可以有文本值,而所有其他列必须是数字,则错误在哪里是明确的。此错误创建的任何其他列都出现在文本列之后。
如果它们都是文本,那么这当然行不通。
您可能能够利用的不仅仅是元数据的列类型。例如,您可能知道某些字段来自一组枚举值,并使用它来确定列分配何时错误。