大数据分析——Apache Doris(二十三)

152 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

  • 从 HDFS 导入一批数据,指定超时时间和过滤比例。使用铭文 my_hdfs_broker 的 broker。简单认证。
LOAD LABEL test_db . user_result3**(DATA INFILE ( "hdfs://node1:8020/datas/user.csv" )INTO TABLE user_result)WITH BROKER broker_name("username" = "hdfs_user" ,"password" = "hdfs_passwd")PROPERTIES("timeout" = "3600" ,"max_filter_ratio" = "0.1");**
其中 hdfs_host 为 namenode 的 host,hdfs_port 为 fs.defaultFS 端口(默认9000)
  • 从 HDFS 导入一批数据,指定hive的默认分隔符\x01,并使用通配符*指定目录下的所有文件
使用简单认证,同时配置 namenode HA。
LOAD LABEL test_db . user_result4**(DATA INFILE ( "hdfs://node1:8020/datas/input/*" )INTO TABLE user_resultCOLUMNS TERMINATED BY "\x01")WITH BROKER broker_name("username" = "hdfs_user" ,"password" = "hdfs_passwd" ,"dfs.nameservices" = "my_ha" ,"dfs.ha.namenodes.my_ha" = "my_namenode1, my_namenode2" ,"dfs.namenode.rpc-address.my_ha.my_namenode1" = "node1:8020" ,"dfs.namenode.rpc-address.my_ha.my_namenode2" = "node2:8020" ,"dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider")**
  • 从 HDFS 导入一批“负”数据。同时使用 kerberos 认证方式。提供 keytab 文件路径
LOAD LABEL test_db . user_result5**(**DATA INFILE ( "hdfs://node1:8020/datas/input/old_file)NEGATIVEINTO TABLE user_resultCOLUMNS TERMINATED BY "\t")WITH BROKER broker_name("hadoop . security . authentication" = "kerberos","kerberos_principal"="doris@YOUR . COM","kerberos_keytab"=" / home / palo / palo . keytab")
  • 从 HDFS 导入一批数据,指定分区。同时使用 kerberos 认证方式。提供 base64 编码后的 keytab 文件内容
LOAD LABEL test_db.user_result6(DATA INFILE("hdfs :// node1 : 8020 / datas / input / file")INTO TABLE user_resultPARTITION (p1, p2)COLUMNS TERMINATED BY " , "(k1, k3, k2, v1, v2))WITH BROKER broker_name("hadoop . security . authentication"="kerberos","kerberos_principal"="doris@YOUR . COM","kerberos_keytab_content"="BQIAAABEAAEACUJBSURVLkNPTQAEcGFsbw")
Stream Load

Broker load是一个同步的导入方式,用户通过发送HTTP协议将本地文件或者数据流导入到Doris中,Stream Load同步执行导入并返回结果,用户可以通过返回判断导入是否成功。

适用场景

Stream load 主要适用于导入本地文件,或通过程序导入数据流中的数据。

基本原理

下图展示了 Stream load 的主要流程,省略了一些导入细节。

图片.png

Stream load 中,Doris 会选定一个节点作为 Coordinator 节点。该节点负责接数据并分发数据到其他数据节点。

用户通过 HTTP 协议提交导入命令。如果提交到 FE,则 FE 会通过 HTTP redirect 指令将请求转发给某一个 BE。用户也可以直接提交导入命令给某一指定 BE。

导入的最终结果由 Coordinator BE 返回给用户。

 数据导入演示
操作步骤说明
1进入mysqlclient,清空上次导入到user_result表的数据
 truncate table user_result;
2通过命令将csv将数据导入到doris,-H指定参数,column_seqarator指定分割符,-T指定数据源文件(在csv文件目录下执行
 curl --location-trusted -u root -H "label:123" -H "column_separator:," -T user.csv -X PUT http://node1:8030/api/test_db/user_result/_stream_load
3查询导入表的数据