我是靠谱客的博主 壮观夕阳,最近开发中收集的这篇文章主要介绍Apache Hudi数据湖hudi-cli客户端使用1. 开启hudi-cli2. 创建表3. desc4. connect表5. 查看commit信息6. 查看FileSystem信息: show fsview7. 文件大小Statistics8. Compactions,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 1. 开启hudi-cli
  • 2. 创建表
  • 3. desc
  • 4. connect表
  • 5. 查看commit信息
    • 5.1 commits show
    • 5.2 commit showpartitions
    • 5.3 commit showfiles
  • 6. 查看FileSystem信息: show fsview
  • 7. 文件大小Statistics
  • 8. Compactions
    • 8.1 查看compaction
    • 8.2 schedule或run compaction
    • 8.3 验证compaction
    • 8.4 Unscheduling Compaction
    • 8.5 Repair Compaction

1. 开启hudi-cli

[root@bigdata001 hudi-cli]#
[root@bigdata001 hudi-cli]# pwd
/opt/hudi/hudi-master/hudi-cli
[root@bigdata001 hudi-cli]#
[root@bigdata001 hudi-cli]# sh hudi-cli.sh
Client jar location not set, please set it in conf/hudi-env.sh
Running : java -cp /opt/hadoop-3.3.1/etc/hadoop:......省略部分......
......省略部分......
===================================================================
*
___
___
*
*
/__
___
/

___
*
*
/ /
/
/__
/


/

*
*
/ /__/
/ /
/
/ / 

 

*
*
/

 ___
/ /
/
/ /
 __
/
__
*
*
/ / 
/__
/ /__/
___
/ /__/  |__|
/ //__/
*
*
/
 / /
/
 
 /__
 
 / /
/
// /
/
*
*

/
/
 
/ /
/
 
/ /
/

/__/
*
*
/ /
/
 / /
/
 / /
/
 __
*
*
/ /
/

/
/

/
/
/__/
*
*
/__/
/__/
/__/
Apache Hudi CLI
*
*
*
===================================================================
Welcome to Apache Hudi CLI. Please type help if you are looking for help.
hudi->
hudi->help
......省略部分......
hudi->

2. 创建表

语法如下

hudi->
hudi->create --path hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb --tableName test_tb --tableType COPY_ON_WRITE
2022-03-31 07:50:19,220 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2022-03-31 07:50:20,657 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb
2022-03-31 07:50:22,221 INFO table.HoodieTableMetaClient: Initializing hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb as hoodie table hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb
2022-03-31 07:50:22,757 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb
2022-03-31 07:50:22,764 INFO table.HoodieTableConfig: Loading table properties from hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb/.hoodie/hoodie.properties
2022-03-31 07:50:22,864 INFO table.HoodieTableMetaClient: Finished Loading Table of type COPY_ON_WRITE(version=1, baseFileFormat=PARQUET) from hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb
2022-03-31 07:50:22,864 INFO table.HoodieTableMetaClient: Finished initializing Table of type COPY_ON_WRITE from hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb
2022-03-31 07:50:22,865 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb
2022-03-31 07:50:22,872 INFO table.HoodieTableConfig: Loading table properties from hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb/.hoodie/hoodie.properties
2022-03-31 07:50:22,881 INFO table.HoodieTableMetaClient: Finished Loading Table of type COPY_ON_WRITE(version=1, baseFileFormat=PARQUET) from hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb
Metadata for table test_tb loaded
hudi:test_tb->

此时HDFS上的目录结构为

hudi_db/test_tb
|---.hoodie
|---.aux
|---.bootstrap
|---.fileids(目录)
|---.partitions(目录)
|---.temp(目录)
|---archived(目录)
|---hoodie.properties

3. desc

hudi:test_tb->desc
╔════════════════════════════════╤═════════════════════════════════════════════════════════╗
║ Property
│ Value
║
╠════════════════════════════════╪═════════════════════════════════════════════════════════╣
║ basePath
│ hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb
║
╟────────────────────────────────┼─────────────────────────────────────────────────────────╢
║ metaPath
│ hdfs://nnha/user/hudi/warehouse/hudi_db/test_tb/.hoodie ║
╟────────────────────────────────┼─────────────────────────────────────────────────────────╢
║ fileSystem
│ hdfs
║
╟────────────────────────────────┼─────────────────────────────────────────────────────────╢
║ hoodie.table.name
│ test_tb
║
╟────────────────────────────────┼─────────────────────────────────────────────────────────╢
║ hoodie.table.type
│ COPY_ON_WRITE
║
╟────────────────────────────────┼─────────────────────────────────────────────────────────╢
║ hoodie.archivelog.folder
│ archived
║
╟────────────────────────────────┼─────────────────────────────────────────────────────────╢
║ hoodie.timeline.layout.version │ 1
║
╟────────────────────────────────┼─────────────────────────────────────────────────────────╢
║ hoodie.table.checksum
│ 484490499
║
╟────────────────────────────────┼─────────────────────────────────────────────────────────╢
║ hoodie.table.version
│ 4
║
╚════════════════════════════════╧═════════════════════════════════════════════════════════╝
hudi:test_tb->

4. connect表

hudi->connect --path hdfs://nnha/user/hudi/warehouse/hudi_db/my_user
2022-03-31 07:47:08,229 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from hdfs://nnha/user/hudi/warehouse/hudi_db/my_user
2022-03-31 07:47:08,618 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2022-03-31 07:47:11,361 INFO table.HoodieTableConfig: Loading table properties from hdfs://nnha/user/hudi/warehouse/hudi_db/my_user/.hoodie/hoodie.properties
2022-03-31 07:47:11,662 INFO table.HoodieTableMetaClient: Finished Loading Table of type MERGE_ON_READ(version=1, baseFileFormat=PARQUET) from hdfs://nnha/user/hudi/warehouse/hudi_db/my_user
Metadata for table my_user loaded
hudi:my_user->

5. 查看commit信息

5.1 commits show

hudi:my_user->
hudi:my_user->commits show --sortBy "Total Bytes Written" --desc true --limit 3
2022-03-31 08:07:30,834 INFO timeline.HoodieActiveTimeline: Loaded instants upto : Option{val=[20220326234620162__deltacommit__COMPLETED]}
╔═══════════════════╤═════════════════════╤═══════════════════╤═════════════════════╤══════════════════════════╤═══════════════════════╤══════════════════════════════╤══════════════╗
║ CommitTime
│ Total Bytes Written │ Total Files Added │ Total Files Updated │ Total Partitions Written │ Total Records Written │ Total Update Records Written │ Total Errors ║
╠═══════════════════╪═════════════════════╪═══════════════════╪═════════════════════╪══════════════════════════╪═══════════════════════╪══════════════════════════════╪══════════════╣
║ 20220326233339019 │ 1.8 KB
│ 0
│ 2
│ 2
│ 2
│ 0
│ 0
║
╟───────────────────┼─────────────────────┼───────────────────┼─────────────────────┼──────────────────────────┼───────────────────────┼──────────────────────────────┼──────────────╢
║ 20220326234620162 │ 906.0 B
│ 0
│ 1
│ 1
│ 1
│ 1
│ 0
║
╚═══════════════════╧═════════════════════╧═══════════════════╧═════════════════════╧══════════════════════════╧═══════════════════════╧══════════════════════════════╧══════════════╝
hudi:my_user->

5.2 commit showpartitions

hudi:my_user->commit showpartitions --commit 20220326234620162 --sortBy "Total Bytes Written" --desc true --limit 3
╔═════════════╤══════════════════╤═══════════════════╤═════════════════════╤════════════════════════╤═══════════════════════╤═════════════════════╤══════════════╗
║ Action
│ Partition Path
│ Total Files Added │ Total Files Updated │ Total Records Inserted │ Total Records Updated │ Total Bytes Written │ Total Errors ║
╠═════════════╪══════════════════╪═══════════════════╪═════════════════════╪════════════════════════╪═══════════════════════╪═════════════════════╪══════════════╣
║ deltacommit │ 2022-02-02/japan │ 0
│ 1
│ 0
│ 1
│ 906.0 B
│ 0
║
╚═════════════╧══════════════════╧═══════════════════╧═════════════════════╧════════════════════════╧═══════════════════════╧═════════════════════╧══════════════╝
hudi:my_user->

5.3 commit showfiles

hudi:my_user->commit showfiles --commit 20220326234620162 --sortBy "Partition Path"
╔═════════════╤══════════════════╤══════════════════════════════════════╤═══════════════════╤═══════════════════════╤═══════════════════════╤═════════════════════╤══════════════╤═══════════╗
║ Action
│ Partition Path
│ FileId
│ Previous Commit
│ Total Records Updated │ Total Records Written │ Total Bytes Written │ Total Errors │ File Size ║
╠═════════════╪══════════════════╪══════════════════════════════════════╪═══════════════════╪═══════════════════════╪═══════════════════════╪═════════════════════╪══════════════╪═══════════╣
║ deltacommit │ 2022-02-02/japan │ 8ffd5d1e-abd4-4ad7-ae43-c3c9aa34a859 │ 20220326233339019 │ 1
│ 1
│ 906
│ 0
│ 1810
║
╚═════════════╧══════════════════╧══════════════════════════════════════╧═══════════════════╧═══════════════════════╧═══════════════════════╧═════════════════════╧══════════════╧═══════════╝
hudi:my_user->

6. 查看FileSystem信息: show fsview

hudi:my_user->show fsview all
2022-03-31 09:29:31,282 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from hdfs://nnha/user/hudi/warehouse/hudi_db/my_user
2022-03-31 09:29:31,319 INFO table.HoodieTableConfig: Loading table properties from hdfs://nnha/user/hudi/warehouse/hudi_db/my_user/.hoodie/hoodie.properties
2022-03-31 09:29:31,329 INFO table.HoodieTableMetaClient: Finished Loading Table of type MERGE_ON_READ(version=1, baseFileFormat=PARQUET) from hdfs://nnha/user/hudi/warehouse/hudi_db/my_user
2022-03-31 09:29:31,329 INFO table.HoodieTableMetaClient: Loading Active commit timeline for hdfs://nnha/user/hudi/warehouse/hudi_db/my_user
2022-03-31 09:29:31,333 INFO timeline.HoodieActiveTimeline: Loaded instants upto : Option{val=[20220326234620162__deltacommit__COMPLETED]}
2022-03-31 09:29:31,426 INFO view.AbstractTableFileSystemView: Took 3 ms to read
0 instants, 0 replaced file groups
2022-03-31 09:29:31,566 INFO util.ClusteringUtils: Found 0 files in pending clustering operations
2022-03-31 09:29:31,574 INFO view.AbstractTableFileSystemView: addFilesToView: NumFiles=0, NumFileGroups=0, FileGroupsCreationTime=6, StoreTimeTaken=1
╔═══════════╤════════╤══════════════╤═══════════╤════════════════╤═════════════════╤═══════════════════════╤═════════════╗
║ Partition │ FileId │ Base-Instant │ Data-File │ Data-File Size │ Num Delta Files │ Total Delta File Size │ Delta Files ║
╠═══════════╧════════╧══════════════╧═══════════╧════════════════╧═════════════════╧═══════════════════════╧═════════════╣
║ (empty)
║
╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
hudi:my_user->
hudi:my_user->show fsview latest --partitionPath "2022-02-02/japan"
2022-03-31 09:35:58,118 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from hdfs://nnha/user/hudi/warehouse/hudi_db/my_user
2022-03-31 09:35:58,124 INFO table.HoodieTableConfig: Loading table properties from hdfs://nnha/user/hudi/warehouse/hudi_db/my_user/.hoodie/hoodie.properties
2022-03-31 09:35:58,133 INFO table.HoodieTableMetaClient: Finished Loading Table of type MERGE_ON_READ(version=1, baseFileFormat=PARQUET) from hdfs://nnha/user/hudi/warehouse/hudi_db/my_user
2022-03-31 09:35:58,133 INFO table.HoodieTableMetaClient: Loading Active commit timeline for hdfs://nnha/user/hudi/warehouse/hudi_db/my_user
2022-03-31 09:35:58,138 INFO timeline.HoodieActiveTimeline: Loaded instants upto : Option{val=[20220326234620162__deltacommit__COMPLETED]}
2022-03-31 09:35:58,145 INFO view.AbstractTableFileSystemView: Took 1 ms to read
0 instants, 0 replaced file groups
2022-03-31 09:35:58,149 INFO util.ClusteringUtils: Found 0 files in pending clustering operations
2022-03-31 09:35:58,154 INFO view.AbstractTableFileSystemView: addFilesToView: NumFiles=1, NumFileGroups=1, FileGroupsCreationTime=5, StoreTimeTaken=0
╔══════════════════╤══════════════════════════════════════╤═══════════════════╤═══════════╤════════════════╤═════════════════╤══════════════════╤═══════════════════════════════════╤═════════════════════════════════════╤════════════════════════════════════════════╤══════════════════════════════════════════════╤═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╤══════════════════════════════════════╗
║ Partition
│ FileId
│ Base-Instant
│ Data-File │ Data-File Size │ Num Delta Files │ Total Delta Size │ Delta Size - compaction scheduled │ Delta Size - compaction unscheduled │ Delta To Base Ratio - compaction scheduled │ Delta To Base Ratio - compaction unscheduled │ Delta Files - compaction scheduled
│ Delta Files - compaction unscheduled ║
╠══════════════════╪══════════════════════════════════════╪═══════════════════╪═══════════╪════════════════╪═════════════════╪══════════════════╪═══════════════════════════════════╪═════════════════════════════════════╪════════════════════════════════════════════╪══════════════════════════════════════════════╪═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╪══════════════════════════════════════╣
║ 2022-02-02/japan │ 8ffd5d1e-abd4-4ad7-ae43-c3c9aa34a859 │ 20220326233339019 │
│ -1.0 B
│ 1
│ 1.8 KB
│ 1.8 KB
│ 0.0 B
│ -1.0
│ -1.0
│ [HoodieLogFile{pathStr='hdfs://nnha/user/hudi/warehouse/hudi_db/my_user/2022-02-02/japan/.8ffd5d1e-abd4-4ad7-ae43-c3c9aa34a859_20220326233339019.log.1_0-4-0', fileLen=1810}] │ []
║
╚══════════════════╧══════════════════════════════════════╧═══════════════════╧═══════════╧════════════════╧═════════════════╧══════════════════╧═══════════════════════════════════╧═════════════════════════════════════╧════════════════════════════════════════════╧══════════════════════════════════════════════╧═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╧══════════════════════════════════════╝
hudi:my_user->

show fsview all查询的结果为empty,可能是因为表有两层partition

7. 文件大小Statistics

hudi:my_user->stats filesizes --partitionPath 2022-02-02/japan --sortBy "95th" --desc true --limit 3
╔═══════════════════╤════════╤════════╤════════╤════════╤════════╤════════╤══════════╤════════╗
║ CommitTime
│ Min
│ 10th
│ 50th
│ avg
│ 95th
│ Max
│ NumFiles │ StdDev ║
╠═══════════════════╪════════╪════════╪════════╪════════╪════════╪════════╪══════════╪════════╣
║ 20220326233339019 │ 1.8 KB │ 1.8 KB │ 1.8 KB │ 1.8 KB │ 1.8 KB │ 1.8 KB │ 1
│ 0.0 B
║
╟───────────────────┼────────┼────────┼────────┼────────┼────────┼────────┼──────────┼────────╢
║ ALL
│ 1.8 KB │ 1.8 KB │ 1.8 KB │ 1.8 KB │ 1.8 KB │ 1.8 KB │ 1
│ 0.0 B
║
╚═══════════════════╧════════╧════════╧════════╧════════╧════════╧════════╧══════════╧════════╝
hudi:my_user->

当write时间特别长,可以通过下面的命令查看write amplification写放大

hudi:my_user->stats wa
╔════════════╤════════════════╤═══════════════╤════════════════════════════╗
║ CommitTime │ Total Upserted │ Total Written │ Write Amplification Factor ║
╠════════════╪════════════════╪═══════════════╪════════════════════════════╣
║ Total
│ 0
│ 0
│ 0
║
╚════════════╧════════════════╧═══════════════╧════════════════════════════╝
hudi:my_user->

8. Compactions

8.1 查看compaction

hudi:my_user->compactions show all
╔═════════════════════════╤═══════╤═══════════════════════════════╗
║ Compaction Instant Time │ State │ Total FileIds to be Compacted ║
╠═════════════════════════╧═══════╧═══════════════════════════════╣
║ (empty)
║
╚═════════════════════════════════════════════════════════════════╝
hudi:my_user->
hudi:my_user->
hudi:my_user->compaction show --instant compaction_instant_time
hudi:my_user->

如果compaction_instant_time不存在,会抛异常

8.2 schedule或run compaction

手动schedule或run一个compaction,使用下面的命令,底层是使用spark

hudi:my_user->
hudi:my_user->help compaction schedule
Keyword:
compaction schedule
Description:
Schedule Compaction
Keyword:
sparkMemory
Help:
Spark executor memory
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: '1G'
Keyword:
propsFilePath
Help:
path to properties file on localfs or dfs with configurations for hoodie client for compacting
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: ''
Keyword:
hoodieConfigs
Help:
Any configuration that can be set in the properties file can be passed here in the form of an array
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: ''
Keyword:
sparkMaster
Help:
Spark Master
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: 'local'
* compaction schedule - Schedule Compaction
hudi:my_user->
hudi:my_user->
hudi:my_user->help compaction run
Keyword:
compaction run
Description:
Run Compaction for given instant time
Keyword:
parallelism
Help:
Parallelism for hoodie compaction
Mandatory:
true
Default if specified:
'__NULL__'
Default if unspecified: '__NULL__'
Keyword:
schemaFilePath
Help:
Path for Avro schema file
Mandatory:
true
Default if specified:
'__NULL__'
Default if unspecified: '__NULL__'
Keyword:
sparkMaster
Help:
Spark Master
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: 'local'
Keyword:
sparkMemory
Help:
Spark executor memory
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: '4G'
Keyword:
retry
Help:
Number of retries
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: '1'
Keyword:
compactionInstant
Help:
Base path for the target hoodie table
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: '__NULL__'
Keyword:
propsFilePath
Help:
path to properties file on localfs or dfs with configurations for hoodie client for compacting
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: ''
Keyword:
hoodieConfigs
Help:
Any configuration that can be set in the properties file can be passed here in the form of an array
Mandatory:
false
Default if specified:
'__NULL__'
Default if unspecified: ''
* compaction run - Run Compaction for given instant time
hudi:my_user->

8.3 验证compaction

验证compaction plan,检测compaction的file是否存在且有效

hudi:my_user->
hudi:my_user->compaction validate --instant compaction_instant_time
hudi:my_user->

8.4 Unscheduling Compaction

取消一个file ID的compaction plan

hudi:my_user->
hudi:my_user->compaction unscheduleFileId --fileId fileID
hudi:my_user->

取消一个compaction plan

hudi:my_user->
hudi:my_user->compaction unschedule --compactionInstant compaction_instant_time
hudi:my_user->

8.5 Repair Compaction

有时Repair Compaction可能会失败,导致compaction operation和file slices的状态不一致。用compaction validate进行验证会失败。所以需要进行compaction repair

hudi:my_user->
hudi:my_user->compaction repair --instant 20181005222611
......省略部分......
Compaction successfully repaired
......省略部分......

最后

以上就是壮观夕阳为你收集整理的Apache Hudi数据湖hudi-cli客户端使用1. 开启hudi-cli2. 创建表3. desc4. connect表5. 查看commit信息6. 查看FileSystem信息: show fsview7. 文件大小Statistics8. Compactions的全部内容,希望文章能够帮你解决Apache Hudi数据湖hudi-cli客户端使用1. 开启hudi-cli2. 创建表3. desc4. connect表5. 查看commit信息6. 查看FileSystem信息: show fsview7. 文件大小Statistics8. Compactions所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部