Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hive 从命令行更改配置单元中的架构_Hive - Fatal编程技术网

Hive 从命令行更改配置单元中的架构

Hive 从命令行更改配置单元中的架构,hive,Hive,如何从命令行更改配置单元架构 我需要运行hql脚本来创建表,但这些表需要在特定模式中创建 我使用的是hive-f createTable.hql来创建表您可以在hql/ddl语句中这样做 USE schemaName; create table..... .... 因此,基本上您可以通过使用“use”语句告诉配置单元使用特定的模式。 您还可以在hive CLI中写入它。您可以将参数传递给脚本: hive -hiveconf myschema=newschema -f createTable.

如何从命令行更改配置单元架构

我需要运行
hql
脚本来创建表,但这些表需要在特定模式中创建


我使用的是hive-f createTable.hql来创建表

您可以在hql/ddl语句中这样做

USE schemaName;

create table.....
....
因此,基本上您可以通过使用“use”语句告诉配置单元使用特定的模式。 您还可以在hive CLI中写入它。

您可以将参数传递给脚本:

hive -hiveconf myschema=newschema -f createTable.hql
CREATE SCHEMA IF NOT EXISTS ${hiveconf:myschema}
LOCATION "/foo/dir";

USE ${hiveconf:myschema};
CREATE SCHEMA IF NOT EXISTS ${hiveconf:name}_SCHEMA
LOCATION "/foo/dir";

USE ${hiveconf:name}_SCHEMA;
然后在脚本中:

hive -hiveconf myschema=newschema -f createTable.hql
CREATE SCHEMA IF NOT EXISTS ${hiveconf:myschema}
LOCATION "/foo/dir";

USE ${hiveconf:myschema};
CREATE SCHEMA IF NOT EXISTS ${hiveconf:name}_SCHEMA
LOCATION "/foo/dir";

USE ${hiveconf:name}_SCHEMA;
然后创建的任何表都将位于该工作模式中。您还可以将变量作为名称的一部分:

hive -hiveconf name=Bob -f createTable.hql
在脚本中:

hive -hiveconf myschema=newschema -f createTable.hql
CREATE SCHEMA IF NOT EXISTS ${hiveconf:myschema}
LOCATION "/foo/dir";

USE ${hiveconf:myschema};
CREATE SCHEMA IF NOT EXISTS ${hiveconf:name}_SCHEMA
LOCATION "/foo/dir";

USE ${hiveconf:name}_SCHEMA;

如果要通过命令行在特定架构中运行查询,可以使用以下命令:

hive -e "use schema_name; show tables;"

但是-f和-e不能在同一个命令中同时使用。

问题是有600多个create table脚本,因此我需要在每个脚本中添加USE语句。