更新时间:2022-12-14 GMT+08:00

如何在不同的namespaces上逻辑地分割数据

问题

如何在不同的namespaces上逻辑地分割数据?

回答

  • 配置:

    要在不同namespaces之间逻辑地分割数据,必须更新HDFS,Hive和Spark的“core-site.xml”文件中的以下配置。

    改变Hive组件将改变carbonstore的位置和warehouse的位置。

    • HDFS中的配置
      • fs.defaultFS - 默认文件系统的名称。URI模式必须设置为“viewfs”。当使用“viewfs”模式时,权限部分必须是“ClusterX”。
      • fs.viewfs.mountable.ClusterX.homedir - 主目录基本路径。每个用户都可以使用在“FileSystem/FileContext”中定义的getHomeDirectory()方法访问其主目录。
      • fs.viewfs.mountable.default.link.<dir_name> - ViewFS安装表。

      示例:

      <property>
      <name>fs.defaultFS</name>
      <value>viewfs://ClusterX/</value>
      </property>
      <property>
      <name>fs.viewfs.mounttable.ClusterX.link./folder1</name>
      <value>hdfs://NS1/folder1</value>
      </property>
      <property>
      <name>fs.viewfs.mounttable.ClusterX.link./folder2</name>
      <value>hdfs://NS2/folder2</value>
      </property>
    • Hive和Spark中的配置

      fs.defaultFS - 默认文件系统的名称。URI模式必须设置为“viewfs”。 当使用“viewfs”模式时,权限部分必须是“ClusterX”。

  • 命令格式:

    LOAD DATA INPATH 'path to data' INTO TABLE table_name OPTIONS ('...');

    每当Spark配置有viewFS文件系统时,当尝试从HDFS加载数据时,用户必须在LOAD语句中指定如“viewfs://”这样的路径或相对路径作为文件路径。

  • 示例:
    • viewFS路径举例:

      LOAD DATA INPATH 'viewfs://ClusterX/dir/data.csv' INTO TABLE table_name OPTIONS ('...');

    • 相对路径举例:

      LOAD DATA INPATH  '/apps/input_data1.txt'  INTO TABLE  table_name;