As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Considerações e limitações para usar o Hudi na Amazon EMR
-
O campo de chave de registro não pode ser nulo nem estar em branco: o campo especificado como o campo de chave de registro não pode ter valores
null
nem em branco. -
Esquema atualizado por padrão ao upsert e insert — o Hudi fornece uma interface
HoodieRecordPayload
que determina como a entrada DataFrame e o conjunto de dados Hudi existente são mesclados para produzir um conjunto de dados novo e atualizado. O Hudi fornece uma implementação padrão dessa classe,OverwriteWithLatestAvroPayload
, que sobrescreve os registros existentes e atualiza o esquema conforme especificado na entrada. DataFrame Para personalizar essa lógica a fim de implementar atualizações parciais e de mesclagem, é possível fornecer uma implementação da interfaceHoodieRecordPayload
usando o parâmetroDataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY
. -
A exclusão requer um esquema: ao excluir, você precisa especificar a chave de registro, a chave de partição e os campos de chave de pré-combinação. Outras colunas podem ficar
null
ou em branco, mas o esquema completo é necessário. -
Limitações das tabelas MoR: as tabelas MoR não são compatíveis com pontos de salvamento. Você pode consultar tabelas MoR usando a visualização otimizada para leitura ou a visualização em tempo real (
) do SparkSQL, Presto ou Hive. O uso da visão otimizada para leitura expõe apenas os dados do arquivo básico e não expõe uma visão mesclada dos dados básicos e de log.tableName
_rt -
Hive
-
Para registrar tabelas no metastore do Hive, o Hudi espera que o servidor Thrift do Hive esteja em execução na porta padrão
10000
. Se você substituir essa porta por uma porta personalizada, transmita a opçãoHIVE_URL_OPT_KEY
conforme mostrado no exemplo a seguir..option(DataSourceWriteOptions.HIVE_URL_OPT_KEY, "jdbc:hive2://localhost:
override-port-number
-
O tipo de dados
timestamp
no Spark é registrado como tipo de dadoslong
no Hive, e não como o tipotimestamp
do Hive.
-
-
Presto
-
O Presto não é compatível com a leitura de tabelas MoR em tempo real em versões do Hudi anteriores à 0.6.0.
-
O Presto só oferece suporte a consultas de snapshots.
-
Para o Presto interpretar corretamente colunas de conjuntos de dados do Hudi, defina o valor
hive.parquet_use_column_names
comotrue
.-
Para definir o valor de uma sessão, execute o seguinte comando no shell Presto:
set session hive.parquet_use_column_names=true
-
Para definir o valor no nível do cluster, use a classificação de configuração
presto-connector-hive
para definirhive.parquet.use_column_names
comotrue
, conforme mostrado no exemplo a seguir. Para obter mais informações, consulte Configurar aplicações.[ { "Classification": "presto-connector-hive", "Properties": { "hive.parquet.use-column-names": "true" } } ]
-
-
-
HBaseÍndice
-
A HBase versão usada para criar o Hudi pode ser diferente da listada no Guia de EMR Lançamento. Para extrair as dependências corretas da sua sessão do Spark, acesse o comando a seguir.
spark-shell \ --jars /usr/lib/spark/external/lib/spark-avro.jar,/usr/lib/hudi/cli/lib/*.jar \ --conf "spark.serializer=org.apache.spark.serializer.KryoSerializer" \ --conf "spark.sql.hive.convertMetastoreParquet=false"
-