cloudera impalaParquet地板\u备用\u方案\u解决方案

sqyvllje  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(331)

是否可以将cloudera impala(5.12)配置为默认的“name”而不是“position”来表示Parquet\u fallback \u schema \u resolution?
我的Parquet文件并不总是有相同的列集,因此我们需要 Impala 按名称而不是位置来查找它们,并且在每个会话中使用色调进行此操作有点麻烦:
设置parquet\u fallback\u schema\u resolution=name;

368yc8dk

368yc8dk1#

感谢阿莫斯提供的信息,
我在cloudera论坛上发布了同样的问题,他们给我指出了一种通过cloudera管理器配置这个的方法。
http://community.cloudera.com/t5/interactive-short-cycle-sql/parquet-fallback-schema-resolution/m-p/62318#m3883

dbf7pr2w

dbf7pr2w2#

恐怕这在 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: "
          "'$0'. 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
....
}

相关问题