云朵 impala PARQUET_FALLBACK_SCHEMA_RESOLUTION
cloudera impala PARQUET_FALLBACK_SCHEMA_RESOLUTION
可以将 Cloudera Impala (5.12) 配置为默认为 name
而不是 position
for PARQUET_FALLBACK_SCHEMA_RESOLUTION
?
我的 Parquet 文件并不总是具有相同的列集,因此我们需要 Impala 按名称而不是位置来查找它们,在 Hue 中为每个列执行此操作有点麻烦会话:
set PARQUET_FALLBACK_SCHEMA_RESOLUTION=name;
恐怕这在 Impala 端是不可配置的。
case TImpalaQueryOptions::PARQUET_FALLBACK_SCHEMA_RESOLUTION: {
if (iequals(value, "position") ||
iequals(value, to_string(TParquetFallbackSchemaResolution::POSITION))) {
query_options->__set_parquet_fallback_schema_resolution(
TParquetFallbackSchemaResolution::POSITION);
} else if (iequals(value, "name") ||
iequals(value, to_string(TParquetFallbackSchemaResolution::NAME))) {
query_options->__set_parquet_fallback_schema_resolution(
TParquetFallbackSchemaResolution::NAME);
} else {
return Status(Substitute("Invalid PARQUET_FALLBACK_SCHEMA_RESOLUTION option: "
"'[=10=]'. Valid options are 'POSITION' and 'NAME'.", value));
}
break;
}
Impala 服务器没有设置默认查询选项。所有选项都在设置客户端会话的地方设置。因此,您需要配置您使用的任何客户端。例如,参见 shell/impala_shell_config_defaults.py
。
不过,您仍然可以修改代码并重新编译:)
在common/thrift/ImpalaInternalService.thrift
struct TQueryOptions {
....
// Determines how to resolve Parquet files' schemas in the absence of field IDs (which
// is always, since fields IDs are NYI). Valid values are "position" (default) and
// "name".
43: optional TParquetFallbackSchemaResolution parquet_fallback_schema_resolution = 0 <--- change it to 1
....
}
感谢阿莫斯提供的信息,
我在 Cloudera 论坛上发布了同样的问题,他们向我指出了一种通过 Cloudera Manager 进行配置的方法。
可以将 Cloudera Impala (5.12) 配置为默认为 name
而不是 position
for PARQUET_FALLBACK_SCHEMA_RESOLUTION
?
我的 Parquet 文件并不总是具有相同的列集,因此我们需要 Impala 按名称而不是位置来查找它们,在 Hue 中为每个列执行此操作有点麻烦会话:
set PARQUET_FALLBACK_SCHEMA_RESOLUTION=name;
恐怕这在 Impala 端是不可配置的。
case TImpalaQueryOptions::PARQUET_FALLBACK_SCHEMA_RESOLUTION: {
if (iequals(value, "position") ||
iequals(value, to_string(TParquetFallbackSchemaResolution::POSITION))) {
query_options->__set_parquet_fallback_schema_resolution(
TParquetFallbackSchemaResolution::POSITION);
} else if (iequals(value, "name") ||
iequals(value, to_string(TParquetFallbackSchemaResolution::NAME))) {
query_options->__set_parquet_fallback_schema_resolution(
TParquetFallbackSchemaResolution::NAME);
} else {
return Status(Substitute("Invalid PARQUET_FALLBACK_SCHEMA_RESOLUTION option: "
"'[=10=]'. Valid options are 'POSITION' and 'NAME'.", value));
}
break;
}
Impala 服务器没有设置默认查询选项。所有选项都在设置客户端会话的地方设置。因此,您需要配置您使用的任何客户端。例如,参见 shell/impala_shell_config_defaults.py
。
不过,您仍然可以修改代码并重新编译:)
在common/thrift/ImpalaInternalService.thrift
struct TQueryOptions {
....
// Determines how to resolve Parquet files' schemas in the absence of field IDs (which
// is always, since fields IDs are NYI). Valid values are "position" (default) and
// "name".
43: optional TParquetFallbackSchemaResolution parquet_fallback_schema_resolution = 0 <--- change it to 1
....
}
感谢阿莫斯提供的信息,
我在 Cloudera 论坛上发布了同样的问题,他们向我指出了一种通过 Cloudera Manager 进行配置的方法。