在外部表定义中指定HDFS数据

在外部表定义中指定HDFS数据

CREATE EXTERNAL TABLE命令的LOCATION子句,用于与Hadoop HA(高可用性)集群、不带HA的Hadoop集群以及MapR集群略有不同HDFS文件。

在一个Hadoop HA集群中,LOCATION子句引用逻辑名字服务的id(hdfs-site.xml配置文件中的dfs.nameservices性质)。有名字服务配置的hdfs-site.xml文件必须被安装在Greenplum的Master和每一个Segment主机上。

例如,如果dfs.nameservices被设置为myclusterLOCATION子句有这样的格式:
LOCATION ('gphdfs://mycluster/path/filename.txt')
一个没有HA的集群在LOCATION子句中指定名字节点的主机名和端口:
LOCATION ('gphdfs://hdfs_host[:port]/path/filename.txt')
如果用户在使用MapR集群,用户要指定一个特定的集群和该文件:
  • 要指定默认集群(MapR配置文件/opt/mapr/conf/mapr-clusters.conf中的第一项),用这种语法指定用户的表的位置:
    LOCATION ('gphdfs:///file_path')
    file_path是该文件的路径。
  • 要指定另一个列在配置文件中的MapR集群,用这种语法指定该文件:
    LOCATION ('gphdfs:///mapr/cluster_name/file_path')
    cluster_name是在该配置文件中指定的集群的名称并且file_path是该文件的路径。

有关MapR集群的信息请见MapR的文档。

HDFS文件的限制如下。
  • 用户可以为使用的gphdfs可读外部表指定一个路径。允许使用通配字符。如果用户指定的是一个目录,默认就是该目录中的所有文件。

    用户只能为可写外部表指定一个目录。

  • LOCATION子句的URI不能包含这四种字符中的任意一种:\'<>。如果URI包含任何这些字符,CREATE EXTERNAL TABLE会返回一个错误。
  • 格式限制如下。
    • 对于自定格式的可读外部表,只允许gphdfs_import格式化器。
    • 对于自定义格式的可写外部表,只允许gphdfs_export格式化器。
    • 只能为可写外部表设置压缩。可读外部表的压缩设置是自动。