华为云用户手册

  • Impala SQL语法规则之判空 判断字段是否为“空”,即没有值,使用“is null”;判断不为空,即有值,使用“is not null”。 要注意的是,在Impala SQL中String类型的字段若是空字符串, 即长度为0,那么对它进行is null的判断结果是False。此时应该使用“col = '' ”来判断空字符串;使用“col != '' ”来判断非空字符串。 正确示例: select * from default.tbl_src where id is null;select * from default.tbl_src where id is not null;select * from default.tbl_src where name = '';select * from default.tbl_src where name != ''; 错误示例: select * from default.tbl_src where id = null;select * from default.tbl_src where id != null;select * from default.tbl_src where name is null;select * from default.tbl_src where name is not null;注:表tbl_src的id字段为Int类型,name字段为String类型。
  • 开发思路 作为存储引擎,通常情况下会和计算引擎一起协同工作: 首先在计算引擎上(比如Impala)用SQL语句创建表对象; 然后通过Kudu的驱动往这个表里写数据; 于此同时可以在计算引擎上直接查询这个表里的数据。 在本开发程序示例中,为了不引入额外的计算引擎,将以Kudu为主,全部通过Java API接口来进行描述: 建立Kudu连接 创建Kudu表 写Kudu数据 修改Kudu表 删除Kudu表
  • Hive JDBC驱动的加载 客户端程序以JDBC的形式连接Impalad时,需要首先加载Hive的JDBC驱动类org.apache.hive.jdbc.HiveDriver。 所以在客户端程序开始前,必须先使用当前类加载器加载该驱动类。 如果classpath下没有相应的jar包,则客户端程序抛出Class Not Found异常并退出。 如下: Class.forName("org.apache.hive.jdbc.HiveDriver").newInstance();
  • 多线程安全登录方式 如果有多线程进行login的操作,当应用程序第一次登录成功后,所有线程再次登录时应该使用relogin的方式。 login的代码样例: private Boolean login(Configuration conf){ boolean flag = false; UserGroupInformation.setConfiguration(conf); try { UserGroupInformation.loginUserFromKeytab(conf.get(PRINCIPAL), conf.get(KEYTAB)); System.out.println("UserGroupInformation.isLoginKeytabBased(): " +UserGroupInformation.isLoginKeytabBased()); flag = true; } catch (IOException e) { e.printStackTrace(); } return flag; } relogin的代码样例: public Boolean relogin(){ boolean flag = false; try { UserGroupInformation.getLoginUser().reloginFromKeytab(); System.out.println("UserGroupInformation.isLoginKeytabBased(): " +UserGroupInformation.isLoginKeytabBased()); flag = true; } catch (IOException e) { e.printStackTrace(); } return flag; }
  • 在Linux调测程序 编译并生成Jar包,并将Jar包复制到与依赖库文件夹同级的目录“src/main/resources”下,具体步骤请参考在Linux调测程序。 运行Consumer样例工程的命令如下。 java -cp /opt/client/lib/*:/opt/client/src/main/resources com.huawei.bigdata.kafka.example.Consumer
  • 操作步骤 编译JDBC样例程序: 在IDEA界面左下方单击“Terminal”进入终端,执行命令mvn clean package进行编译。 当输出“BUILD SUC CES S”,表示编译成功,如下图所示。编译成功后将会在样例工程的target下生成含有“-with-dependencies”字段的jar包。 运行JDBC样例程序: 使用Windows命令行形式运行JDBC样例工程: 在Windows上创建一个目录作为运行目录,如“D:\jdbc_example”,将1中生成的“target”目录下包名中含有“-with-dependencies”字段的Jar包放到该路径下,并在该目录下创建子目录“src/main/resources”,将已获取的“hive-jdbc-example\src\main\resources”目录下的所有文件复制到“resources”下。 执行以下命令运行Jar包: cd /d d:\jdbc_example java -jar hive-jdbc-example-1.0-SNAPSHOT-jar-with-dependencies.jar 以上Jar包名称仅供参考,具体名称以实际生成为主。 在命令行终端查看样例代码中的HQL所查询出的结果,运行成功结果会有如下信息: Create table success!_c00Delete table success! 使用IntelliJ IDEA形式运行JDBC样例工程: 在IntelliJ IDEA的jdbc-examples工程的“JDBCExample”类上单击右键,在弹出菜单中选择“Run JDBCExample.main()”,如下图所示: 在IntelliJ IDEA输出窗口查看样例代码中的HQL所查询出的结果,会有如下信息: Create table success!_c00Delete table success!
  • 获取数据库连接 使用JDK的驱动管理类java.sql.DriverManager来获取一个Impalad的数据库连接。 Impalad的数据库URL为url="jdbc:hive2://xxx.xxx.xxx.xxx:21050;auth=noSasl;principal=impala/hadoop.hadoop.com@HADOOP.COM;user.principal=impala/hadoop.hadoop.com;user.keytab=conf/impala.keytab"; 以上已经经过安全认证,所以用户名和密码为null或者空。 // 建立连接 connection = DriverManager.getConnection(url, "", "");
  • 执行Impala SQL 执行Impala SQL,注意Impala SQL不能以";"结尾。 正确示例: String sql = "SELECT COUNT(*) FROM employees_info";Connection connection = DriverManager.getConnection(url, "", "");PreparedStatement statement = connection.prepareStatement(sql);resultSet = statement.executeQuery(); 错误示例: String sql = "SELECT COUNT(*) FROM employees_info;";Connection connection = DriverManager.getConnection(url, "", "");PreparedStatement statement = connection.prepareStatement(sql);resultSet = statement.executeQuery();
  • Oozie应用开发常用概念 流程定义文件 描述业务逻辑的XML文件,包括“workflow.xml”、“coordinator.xml”、“bundle.xml”三类,最终由Oozie引擎解析并执行。 流程属性文件 流程运行期间的参数配置文件,对应文件名为“job.properties”,每个流程定义有且仅有一个该属性文件。 Client 客户端直接面向用户,可通过Java API、Shell API、 REST API或者Web UI访问Oozie服务端。 Oozie WebUI界面 通过“https://Oozie服务器IP地址:21003/oozie”登录Oozie WebUI界面。 父主题: Oozie应用开发概述
  • MapReduce应用开发流程介绍 开发流程中各阶段的说明如图1和表1所示。 图1 MapReduce应用程序开发流程 表1 MapReduce应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解MapReduce的基本概念。 MapReduce应用开发简介 准备开发和运行环境 使用IntelliJ IDEA工具,请根据指导完成开发环境配置。 MapReduce的运行环境即MapReduce客户端,请根据指导完成客户端的安装和配置。 准备MapReduce开发和运行环境 准备工程 MapReduce提供了不同场景下的样例程序,您可以导入样例工程进行程序学习。或者您可以根据指导,新建一个MapReduce工程。 导入并配置MapReduce样例工程 根据场景开发工程 提供了样例工程。 帮助用户快速了解MapReduce各部件的编程接口。 开发MapReduce应用 编译并运行程序 指导用户将开发好的程序编译并提交运行。 调测MapReduce应用 查看程序运行结果 程序运行结果会写在用户指定的路径下。用户还可以通过UI查看应用运行情况。 调测MapReduce应用 父主题: MapReduce开发指南(普通模式)
  • 参考信息 针对MapReduce提供的几个样例程序,其对应的依赖包如下: MapReduce统计样例程序 没有需要额外导入的jar包 MapReduce访问多组件样例程序 导入样例工程之后,如果需要使用访问多组件样例程序,请确保集群已安装Hive、HBase服务。 不使用访问多组件样例程序时,如果不影响统计样例程序的正常编译,可忽略多组件样例程序相关报错信息,否则请在导入样例工程后将多组件样例程序类文件删除。
  • 准备Spark本地应用开发环境 在进行应用开发时,要准备的开发和运行环境如表1所示。 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统,支持Windows 7以上版本。 运行环境:Windows系统或Linux系统。 如需在本地调测程序,运行环境需要和集群业务平面网络互通。 安装JDK 开发和运行环境的基本配置。版本要求如下: 服务端和客户端仅支持自带的OpenJDK,版本为1.8.0_272,不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的。 X86客户端:Oracle JDK:支持1.8版本;IBM JDK:支持1.8.5.11版本。 TaiShan客户端:OpenJDK:支持1.8.0_272版本。 说明: 基于安全考虑,服务端只支持TLS V1.2及以上的加密协议。 IBM JDK默认只支持TLS V1.0,若使用IBM JDK,请配置启动参数“com.ibm.jsse2.overrideDefaultTLS”为“true”,设置后可以同时支持TLS V1.0/V1.1/V1.2,详情参见https://www.ibm.com/support/knowledgecenter/zh/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/matchsslcontext_tls.html#matchsslcontext_tls。 安装和配置IntelliJ IDEA 用于开发Spark应用程序的工具,建议使用2019.1或其他兼容版本。 说明: 若使用IBM JDK,请确保IntelliJ IDEA中的JDK配置为IBM JDK。 若使用Oracle JDK,请确保IntelliJ IDEA中的JDK配置为Oracle JDK。 若使用Open JDK,请确保IntelliJ IDEA中的JDK配置为Open JDK。 不同的IntelliJ IDEA不要使用相同的workspace和相同路径下的示例工程。 安装Maven 开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。 安装Scala Scala开发环境的基本配置。版本要求:2.12.10。 安装Scala插件 Scala开发环境的基本配置。版本要求:2018.2.11或其他兼容版本。 安装Editra Python开发环境的编辑器,用于编写Python程序。或者使用其他编写Python应用程序的IDE。 7-zip 用于解压“*.zip”和“*.rar”文件,支持7-Zip 16.04版本。 安装Python 版本要求不低于3.6。 父主题: 准备Spark应用开发环境
  • Spark应用开发流程介绍 Spark包含Spark Core、Spark SQL和Spark Streaming三个组件,其应用开发流程都是相同的。 开发流程中各阶段的说明如图1和表1所示。 图1 Spark应用程序开发流程 表1 Spark应用开发的流程说明 阶段 说明 参考文档 准备开发环境 Spark的应用程序支持使用Scala、Java、Python三种语言进行开发。推荐使用IDEA工具,请根据指导完成不同语言的开发环境配置。Spark的运行环境即Spark客户端,请根据指导完成客户端的安装和配置。 准备Spark本地应用开发环境 准备连接集群配置文件 应用程序开发或运行过程中,需通过集群相关配置文件信息连接 MRS 集群,配置文件通常包括集群组件信息文件以及用于安全认证的用户文件,可从已创建好的MRS集群中获取相关内容。 用于程序调测或运行的节点,需要与MRS集群内节点网络互通,同时配置hosts 域名 信息。 准备Spark连接集群配置文件 准备工程 Spark提供了不同场景下的样例程序,您可以导入样例工程进行程序学习。或者您可以根据指导,新建一个Spark工程。 导入并配置Spark样例工程 新建Spark样例工程(可选) 根据场景开发工程 提供了Scala、Java、Python三种不同语言的样例工程,还提供了Streaming、SQL、JDBC客户端程序以及Spark on HBase四种不同场景的样例工程。 帮助用户快速了解Spark各部件的编程接口。 开发Spark应用 编译并运行程序 指导用户将开发好的程序编译并提交运行。 在Linux环境中编包并运行Spark程序 父主题: Spark2x开发指南(普通模式)
  • 提交命令 假设用例代码打包后的jar包名为spark-hbaseContext-test-1.0.jar,并将jar包放在客户端$SPARK_HOME目录下,以下命令均在$SPARK_HOME目录执行,Java接口对应的类名前有Java字样,请参考具体样例代码进行书写。 yarn-client模式: java/scala版本(类名等请与实际代码保持一致,此处仅为示例) bin/spark-submit --master yarn --deploy-mode client --class com.huawei.bigdata.spark.examples.hbasecontext.JavaHBaseDistributedScanExample SparkOnHbaseJavaExample-1.0.jar ExampleAvrotable python版本(文件名等请与实际保持一致,此处仅为示例) bin/spark-submit --master yarn --deploy-mode client --jars SparkOnHbaseJavaExample-1.0.jar HBaseDistributedScanExample.py ExampleAvrotable yarn-cluster模式: java/scala版本(类名等请与实际代码保持一致,此处仅为示例) bin/spark-submit --master yarn --deploy-mode cluster --class com.huawei.bigdata.spark.examples.hbasecontext.JavaHBaseDistributedScanExample SparkOnHbaseJavaExample-1.0.jar ExampleAvrotable python版本(文件名等请与实际保持一致,此处仅为示例) bin/spark-submit --master yarn --deploy-mode cluster --jars SparkOnHbaseJavaExample-1.0.jar HBaseDistributedScanExample.py ExampleAvrotable
  • 打包项目 通过IDEA自带的Maven工具,打包项目,生成jar包。具体操作请参考在Linux环境中编包并运行Spark程序。 将打包生成的jar包上传到Spark客户端所在服务器的任意目录(例如“$SPARK_HOME” )下。 若运行“Spark on HBase”样例程序,需要在Spark客户端的“spark-defaults.conf”配置文件中将配置项“spark.yarn.security.credentials.hbase.enabled”设置为“true”(该参数值默认为“false”,改为“true”后对已有业务没有影响。如果要卸载HBase服务,卸载前请将此参数值改回“false”),将配置项“spark.inputFormat.cache.enabled”设置为“false”。
  • Python样例代码 下面代码片段仅为演示,具体代码参见SparkOnHbasePythonExample中HBaseDistributedScanExample文件: # -*- coding:utf-8 -*-# -*- coding:utf-8 -*-"""【说明】由于pyspark不提供Hbase相关api,本样例使用Python调用Java的方式实现"""from py4j.java_gateway import java_importfrom pyspark.sql import SparkSession# 创建SparkSessionspark = SparkSession\ .builder\ .appName("JavaHBaseDistributedScan")\ .getOrCreate()# 向sc._jvm中导入要运行的类java_import(spark._jvm, 'com.huawei.bigdata.spark.examples.hbasecontext.JavaHBaseDistributedScanExample')# 创建类实例并调用方法,传递sc._jsc参数spark._jvm.JavaHBaseDistributedScan().execute(spark._jsc, sys.argv)# 停止SparkSessionspark.stop()
  • 数据规划 运行样例程序前,需要在Spark客户端的“spark-defaults.conf”配置文件中将配置项“spark.yarn.security.credentials.hbase.enabled”设置为“true”(该参数值默认为“false”,改为“true”后对已有业务没有影响。如果要卸载HBase服务,卸载前请将此参数值改回“false”)。 创建HBase表,构造数据,列需要包含key,modify_time,valid。其中每条数据key值全表唯一,modify_time代表修改时间,valid代表是否为有效数据(该样例中'1'为有效,'0'为无效数据)。 示例:进入hbase shell,执行如下命令: create 'hbase_table','key','info' put 'hbase_table','1','info:modify_time','2019-11-22 23:28:39' put 'hbase_table','1','info:valid','1' put 'hbase_table','2','info:modify_time','2019-11-22 23:28:39' put 'hbase_table','2','info:valid','1' put 'hbase_table','3','info:modify_time','2019-11-22 23:28:39' put 'hbase_table','3','info:valid','0' put 'hbase_table','4','info:modify_time','2019-11-22 23:28:39' put 'hbase_table','4','info:valid','1' 上述数据的modify_time列可设置为当前时间之前的值。 put 'hbase_table','5','info:modify_time','2021-03-03 15:20:39' put 'hbase_table','5','info:valid','1' put 'hbase_table','6','info:modify_time','2021-03-03 15:20:39' put 'hbase_table','6','info:valid','1' put 'hbase_table','7','info:modify_time','2021-03-03 15:20:39' put 'hbase_table','7','info:valid','0' put 'hbase_table','8','info:modify_time','2021-03-03 15:20:39' put 'hbase_table','8','info:valid','1' put 'hbase_table','4','info:valid','0' put 'hbase_table','4','info:modify_time','2021-03-03 15:20:39' 上述数据的modify_time列可设置为样例程序启动后30分钟内的时间值(此处的30分钟为样例程序默认的同步间隔时间,可修改)。 put 'hbase_table','9','info:modify_time','2021-03-03 15:32:39' put 'hbase_table','9','info:valid','1' put 'hbase_table','10','info:modify_time','2021-03-03 15:32:39' put 'hbase_table','10','info:valid','1' put 'hbase_table','11','info:modify_time','2021-03-03 15:32:39' put 'hbase_table','11','info:valid','0' put 'hbase_table','12','info:modify_time','2021-03-03 15:32:39' put 'hbase_table','12','info:valid','1' 上述数据的modify_time列可设置为样例程序启动后30分钟到60分钟内的时间值,即第二次同步周期。 在sparksql中创建HBase的hive外表,命令如下: create table external_hbase_table(key string ,modify_time STRING, valid STRING) using org.apache.spark.sql.hbase.HBaseSource options(hbaseTableName "hbase_table", keyCols "key", colsMapping "modify_time=info.modify_time,valid=info.valid"); 在sparksql中创建CarbonData表: create table carbon01(key string,modify_time STRING, valid STRING) stored as carbondata; 初始化加载当前hbase表中所有数据到CarbonData表; insert into table carbon01 select * from external_hbase_table where valid='1'; 用spark-submit提交命令: spark-submit --master yarn --deploy-mode client --class com.huawei.bigdata.spark.examples.HBaseExternalHivetoCarbon /opt/example/HBaseExternalHivetoCarbon-1.0.jar
  • 简介 Yarn是一个分布式的资源管理系统,用于提高分布式的集群环境下的资源利用率,这些资源包括内存、IO、网络、磁盘等。其产生的原因是为了解决原MapReduce框架的不足。最初MapReduce的committer还可以周期性的在已有的代码上进行修改,可是随着代码的增加以及原MapReduce框架设计的不足,在原MapReduce框架上进行修改变得越来越困难,所以MapReduce的committer决定从架构上重新设计MapReduce,使下一代的MapReduce(MRv2/Yarn)框架具有更好的扩展性、可用性、可靠性、向后兼容性和更高的资源利用率,以及能支持除了MapReduce计算框架外的更多的计算框架。
  • 基本概念 ResourceManager(RM) RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。 ApplicationMaster(AM) 用户提交的每个应用程序均包含一个AM,主要功能包括: 与RM调度器协商以获取资源(用Container表示)。 将得到的资源进一步分配给内部任务。 与NM通信以启动/停止任务。 监控所有任务的运行状态,并在任务运行失败时重新为任务申请资源以重启任务。 NodeManager(NM) NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它会接收并处理来自AM的Container启动/停止等各种请求。 Container Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。
  • Hive应用开发样例工程介绍 MRS样例工程获取地址为https://github.com/huaweicloud/huaweicloud-mrs-example,切换分支为与MRS集群相匹配的版本分支,然后下载压缩包到本地后解压,即可获取各组件对应的样例代码工程。 当前MRS提供以下Hive相关样例工程: 表1 Hive相关样例工程 样例工程位置 描述 hive-examples/hive-jdbc-example hive-examples/hive-jdbc-example-multizk Hive JDBC处理数据Java示例程序。 本工程使用JDBC接口连接Hive,在Hive中执行相关数据操作。使用JDBC接口实现创建表、加载数据、查询数据等功能,还可实现在同一个客户端进程内同时访问 FusionInsight ZooKeeper和第三方的ZooKeeper,相关样例介绍请参见Hive JDBC访问样例程序。 hive-examples/hcatalog-example Hive HCatalog处理数据Java示例程序。 使用HCatalog接口实现通过Hive命令行方式对MRS Hive元数据进行数据定义和查询操作,相关样例介绍请参见HCatalog访问Hive样例程序。 hive-examples/python-examples 使用Python连接Hive执行SQL样例。 可实现使用Python对接Hive并提交数据分析任务,相关样例介绍请参见基于Python的Hive样例程序。 hive-examples/python3-examples 使用Python3连接Hive执行SQL样例。 可实现使用Python3对接Hive并提交数据分析任务,相关样例介绍请参见基于Python3的Hive样例程序。 父主题: Hive应用开发概述
  • Impala应用开发简介 Impala直接对存储在HDFS,HBase 或 对象存储服务 (OBS)中的Hadoop数据提供快速,交互式SQL查询。除了使用相同的统一存储平台之外,Impala还使用与Apache Hive相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue中的Impala查询UI)。这为实时或面向批处理的查询提供了一个熟悉且统一的平台。作为查询大数据的工具补充,Impala不会替代基于MapReduce构建的批处理框架,例如Hive。基于MapReduce构建的Hive和其他框架最适合长时间运行的批处理作业。 Impala主要特点如下: 支持Hive查询语言(HiveQL)中大多数的SQL-92功能,包括 SELECT,JOIN和聚合函数。 HDFS,HBase 和对象存储服务(OBS)存储,包括: HDFS文件格式:基于分隔符的text file,Parquet,Avro,SequenceFile和RCFile。 压缩编解码器:Snappy,GZIP,Deflate,BZIP。 常见的数据访问接口包括: JDBC驱动程序。 ODBC驱动程序。 HUE beeswax和Impala查询UI。 impala-shell命令行接口。 支持Kerberos身份认证。 Impala主要应用于实时查询数据的离线分析(如 日志分析 ,集群状态分析)、大规模的数据挖掘(用户行为分析,兴趣分区,区域展示)等场景下。 父主题: Impala应用开发概述
  • Impala应用开发流程 开发流程中各阶段的说明如图1和表1所示。 图1 Impala应用程序开发流程 表1 Impala应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解Impala的基本概念。 Impala应用开发常用概念 准备开发和运行环境 Impala的应用程序支持使用Java、Python两种语言进行开发。推荐使用IntelliJ IDEA工具,请根据指导完成不同语言的开发环境配置。 准备Impala开发和运行环境 根据场景开发工程 提供了Java、Python两种不同语言的样例工程,还提供了从建表、数据加载到数据查询的样例工程。 Impala样例程序开发思路 运行程序及查看结果 指导用户将开发好的程序编译提交运行并查看结果。 调测Impala应用 父主题: Impala应用开发概述
  • 准备开发环境 在进行应用开发时,需要准备的本地开发环境如表1所示。 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统,推荐Windows7以上版本。 运行环境:Windows或Linux系统。 如需在本地调测程序,运行环境需要和集群业务平面网络互通。 安装JDK 开发和运行环境的基本配置。版本要求如下: MRS集群的服务端和客户端仅支持自带的Oracle JDK(版本为1.8),不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的,支持Oracle JDK和IBM JDK。 Oracle JDK:支持1.7和1.8版本。 IBM JDK:推荐1.7.8.10、1.7.9.40和1.8.3.0版本。 安装和配置IntelliJ IDEA 开发环境的基本配置,建议使用2019.1或其他兼容版本。 说明: 若使用IBM JDK,请确保IntelliJ IDEA中的JDK配置为IBM JDK。 若使用Oracle JDK,请确保IntelliJ IDEA中的JDK配置为Oracle JDK。 不同的IntelliJ IDEA不要使用相同的workspace和相同路径下的示例工程。 安装Maven 开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。 7-zip 用于解压“*.zip”和“*.rar”文件,支持7-zip 16.04版本。
  • 准备运行环境 进行应用开发时,需要同时准备代码的运行调测的环境,用于验证应用程序运行正常。 如果本地Windows开发环境和集群业务平面网络互通,然后直接在Windows中进行程序调测。 如果使用Linux环境调测程序,需准备安装集群客户端的Linux节点并获取相关配置文件。 集群的Master节点或者Core节点使用客户端可参考集群内节点使用MRS客户端,MRS集群外客户端的安装操作可参考集群外节点使用MRS客户端。
  • 样例代码 -- 从本地文件系统/opt/impala_examples_data/目录下将employee_info.txt加载进employees_info表中. LOAD DATA LOCAL INPATH '/opt/impala_examples_data/employee_info.txt' OVERWRITE INTO TABLE employees_info;-- 从HDFS上/user/impala_examples_data/employee_info.txt加载进employees_info表中. LOAD DATA INPATH '/user/impala_examples_data/employee_info.txt' OVERWRITE INTO TABLE employees_info; 加载数据的实质是将数据复制到HDFS上指定表的目录下。 “LOAD DATA LOCAL INPATH”命令可以完成从本地文件系统加载文件到Impala的需求,但是当指定“LOCAL”时,这里的路径指的是当前连接的“Impalad”的本地文件系统的路径。
  • 在Windows中调测Impala JDBC应用 运行样例。 导入和修改样例后,即可在开发环境中,右击“ExampleMain.java”,选择“ExampleMain.main()”运行对应的应用程序工程。 使用Windows访问MRS集群来操作Impala,有如下两种方式。 方法一:申请一台Windows的E CS 访问MRS集群操作Impala,在安装开发环境后可直接运行样例代码。 在“现有集群”列表中,单击已创建的集群名称。 记录集群的“可用分区”、“虚拟私有云”,以及Master节点的“默认安全组”。 在弹性云服务管理控制台,创建一个新的弹性云服务器。 弹性云服务器的“可用分区”、“虚拟私有云”、“安全组”,需要和待访问集群的配置相同。 选择一个Windows系统的公共镜像。 其他配置参数详细信息,请参见自定义购买弹性云服务器。 方法二:使用本机访问MRS集群操作Impala,在安装开发环境后并完成以下步骤后再运行样例代码。 为任意一个Core节点绑定弹性公网IP,完成后将该IP地址配置在开发样例的client.properties下的impala-server配置项中,用于访问Impala服务、提交SQL语句。 在弹性公网IP页面申请一个弹性公网IP,并为集群的任一Core节点绑定该弹性公网IP,具体请参考申请并绑定弹性公网IP。 为MRS集群开放安全组规则。在集群Master节点和Core节点的安全组添加安全组规则使弹性云服务器可以访问集群,具体请参考配置安全组规则。 样例中的client.properties配置如下: impala-server = XX.XX.XX.XX:21050 ##指定要连接的impalad实例所在Core节点绑定的服务地址,方式二需要填写步骤1中绑定的弹性公网IP 查看结果。 查看样例代码中的Impala SQL所查询出的结果,运行成功结果会有如下信息。 ExampleMain运行及结果查看。 Create table success!_c00Delete table success! 运行样例出错,出现如下提示: Error running 'ExampleMain': Command line is too long. Shorten command line for ServiceStarter or also for Application default configuration. 解决办法: 在Intellij中的配置Edit Configurations 中设置shorten command line 即可。 父主题: 调测Impala应用
  • Kafka应用开发流程介绍 Kafka客户端角色包括Producer和Consumer两个角色,其应用开发流程是相同的。 开发流程中各个阶段的说明如图1和表1所示。 图1 Kafka客户端程序开发流程 表1 Kafka客户端开发的流程说明 阶段 说明 参考文档 准备开发和运行环境 Kafka的客户端程序当前推荐使用java语言进行开发,可使用IntelliJ IDEA工具开发。 Kafka的运行环境即Kafka客户端,请根据指导完成客户端的安装和配置。 准备本地应用开发环境 准备连接集群配置文件 应用程序开发或运行过程中,需通过集群相关配置文件信息连接MRS集群,配置文件通常包括集群组件信息文件以及用于安全认证的用户文件,可从已创建好的MRS集群中获取相关内容。 用于程序调测或运行的节点,需要与MRS集群内节点网络互通,同时配置hosts域名信息。 准备连接Kafka集群配置文件 配置并导入样例工程 Kafka提供了不同场景下的样例程序,您可以导入样例工程进行程序学习。 导入并配置Kafka样例工程 根据业务场景开发工程 提供了Producer和Consumer相关API的使用样例,包含了API和多线程的使用场景,帮助用户快速熟悉Kafka接口。 开发Kafka应用 编译与运行程序 指导用户将开发好的程序编译并提交运行。 调测Kafka应用 父主题: Kafka开发指南(普通模式)
  • 准备开发环境 在进行应用开发时,要准备的开发和运行环境如表1所示。 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统,支持Windows7以上版本。 运行环境: Linux系统。 如需在本地调测程序,运行环境需要和集群业务平面网络互通。 安装JDK 开发和运行环境的基本配置。版本要求如下: 服务端和客户端仅支持自带的OpenJDK,版本为1.8.0_242,不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的。 X86客户端:Oracle JDK,支持1.8版本。 TaiShan客户端:OpenJDK,支持1.8.0_242版本。 说明: 基于安全考虑,服务端只支持TLS V1.2及以上的加密协议。 安装和配置IntelliJ IDEA 开发环境的基本配置,建议使用2019.1或其他兼容版本。 说明: 若使用Oracle JDK,请确保IntelliJ IDEA中的JDK配置为Oracle JDK。 若使用Open JDK,请确保IntelliJ IDEA中的JDK配置为Open JDK。 不同的IntelliJ IDEA不要使用相同的workspace和相同路径下的示例工程。 安装Maven 开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。 7-zip 用于解压“*.zip”和“*.rar”文件,支持7-zip 16.04版本。
  • 准备运行环境 进行应用开发时,需要同时准备代码的运行调测的Linux环境,用于验证应用程序运行正常。 在节点中安装客户端,例如客户端安装目录为“/opt/client”。 客户端机器的时间与集群的时间要保持一致,时间差小于5分钟。 集群的Master节点或者Core节点已默认安装好客户端,可直接使用,MRS集群外客户端的安装操作可参考集群外节点使用MRS客户端。 登录FusionInsight Manager页面,下载集群客户端软件包至主管理节点并解压,然后以root用户登录主管理节点,进入集群客户端解压路径下,复制“FusionInsight_Cluster_1_Services_ClientConfig/Kudu/config”路径下的所有配置文件至客户端节点,放置到与准备放置编译出的jar包同目录的“conf”目录下,用于后续调测,例如“/opt/client/conf”。 例如客户端软件包为“FusionInsight_Cluster_1_Services_Client.tar”,下载路径为主管理节点的“/tmp/FusionInsight-Client”: cd /tmp/FusionInsight-Client tar -xvf FusionInsight_Cluster_1_Services_Client.tar tar -xvf FusionInsight_Cluster_1_Services_ClientConfig.tar cd FusionInsight_Cluster_1_Services_ClientConfig scp Kudu/config/* root@客户端节点IP地址:/opt/client/conf 检查客户端节点网络连接。 在安装客户端过程中,系统会自动配置客户端节点“hosts”文件,建议检查“/etc/hosts”文件内是否包含集群内节点的主机名信息,如未包含,需要手动复制解压目录下的“hosts”文件中的内容到客户端所在节点的hosts文件中,确保本地机器能与集群各主机在网络上互通。
  • 代码样例 如下是写数据的代码片段: // Alter the table, adding a column with a default value.// Note: after altering the table, the table needs to be re-opened.AlterTableOptions ato = new AlterTableOptions();ato.addColumn("added", org.apache.kudu.Type.DOUBLE, DEFAULT_DOUBLE);client.alterTable(tableName, ato); 示例代码中,AlterTableOptions是要修改表属性的集合,这里往表里新增加了一列。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全