En Hive, hay un mapa, una matriz y una estructura al mismo tiempo. ¿Cómo se debe especificar el separador en la declaración de creación de tablas?

      Hay formatos de mapa, matriz y estructura en Hive. Si estos tres formatos existen al mismo tiempo, ¿cómo debe especificarse el separador para la instrucción de creación de tablas?
      

1. Diga la respuesta primero

      Di la respuesta primero:

create table test(
	name string,
	friends array<string>,
	children map<string, int>,
	address struct<street:string, city:string>
)
row format delimited
fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';

      Explicación de campo:

row format delimited fields terminated by ','   /* 列分隔符 */
collection items terminated by '_'         /*  MAP STRUCT 和 ARRAY 的分隔符(数据分割
符号)  */
map keys terminated by ':'    /* MAP 中的 key 与 value 的分隔符    */
lines terminated by '\n';       /* 行分隔符  */

      En realidad, solo hay dos lugares que necesitan explicación:
      ①. Los elementos de colección terminados por '_', en colmena, mapa, matriz y estructura, se especifican utilizando elementos de colección terminados por, por lo que solo se puede compartir un separador.
      Lines. Líneas terminadas por '\ n', no es necesario escribir, el separador de línea es \ n por defecto

2. Da un ejemplo

      Suponiendo los siguientes datos, debe insertar en la tabla relacionada con la colmena

{
	"name": "张三",
	"friends": ["李四" , "王五"] , //列表 Array,
	"children": { //键值 Map,
		"小李四": 18 ,
		"小王五": 19
	}
	"address": { //结构 Struct,
		"street": "大兴" ,
		"city": "北京"
	}
}
  1. Primero, organícelo en una pieza de datos:
张三,李四_王五,小李四:18_小王五:19,大兴_北京

      Tenga en cuenta el separador

  1. Construir mesa
create table test(
	name string,
	friends array<string>,
	children map<string, int>,
	address struct<street:string, city:string>
)
row format delimited
fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';
  1. Imprima primero los datos en el documento y luego léalos en la colmena
load data local inpath
"/home/software/data/test.txt" into table test;
  1. Método de
    acceso Mapa de acceso:
select 	friends[1], /* 这是访问array */
	children['xiaosong'], /* 这是访问map */
	address.city
	from test;

      
      

48 artículos originales publicados · Me gusta 36 · Visitas 130,000+

Supongo que te gusta

Origin blog.csdn.net/weixin_42845682/article/details/104919328
Recomendado
Clasificación