9 个版本
0.3.0 | 2023年7月14日 |
---|---|
0.2.0 | 2022年5月6日 |
0.1.0 | 2022年4月28日 |
0.0.5 | 2022年4月27日 |
#695 in 构建工具
6,794 每月下载
在 3 个 Crates 中使用(通过 hdrs)
2MB
49K SLoC
hdfs-sys ─
绑定到 HDFS
本地 C API。
直接使用这些绑定很无聊且容易出错,如果可能,请使用 hdrs。
支持的平台
- Linux
- macOS
- Windows
支持的版本
要针对 libhdfs
的版本,启用以下 Cargo 功能之一
hdfs_2_2
: 需要 hdfs 2.2 或更高版本。hdfs_2_3
: 需要 hdfs 2.3 或更高版本。hdfs_2_4
: 需要 hdfs 2.4 或更高版本。hdfs_2_5
: 需要 hdfs 2.5 或更高版本。hdfs_2_6
: (默认) 需要 hdfs 2.6 或更高版本。hdfs_2_7
: 需要 hdfs 2.7 或更高版本。hdfs_2_8
: 需要 hdfs 2.8 或更高版本。hdfs_2_9
: 需要 hdfs 2.9 或更高版本。hdfs_2_10
: 需要 hdfs 2.10 或更高版本。hdfs_3_0
: 需要 hdfs 3.0 或更高版本。hdfs_3_1
: 需要 hdfs 3.1 或更高版本。hdfs_3_2
: 需要 hdfs 3.2 或更高版本。hdfs_3_3
:需要hdfs 3.3或更高版本。
请注意
- 如果您未启用这些功能之一,默认情况下将提供由
hdfs_2_6
提供的API。 - 启用一个功能也将启用其前面的所有功能。例如,启用
hdfs_2_4
也将启用hdfs_2_3
和hdfs_2_2
。 - 过旧的hdfs版本可能包含错误或无法在您的平台上编译。
编译
hdfs-sys
支持动态链接、静态链接和供应商
- 如果已启用
vnedored
功能,hdfs-sys
将以静态方式编译和链接libhdfs
。 - 使用
HDFS_LIB_DIR
指定libhdfs.so
或libhdfs.a
的路径 - 使用
HDFS_STATIC=1
来选择在动态链接和静态链接之间切换 - 如果未设置
HDFS_LIB_DIR
,我们将尝试查找${HADOOP_HOME}/lib/native
- 如果所有环境变量都为空,我们将尝试以静态方式编译libhdfs并将其链接
依赖关系
此crate将动态链接到libjvm
。
为了使此crate正常工作,请确保以下环境变量设置正确
JAVA_HOME
:hdfs-sys
将搜索路径如${JAVA_HOME}/lib/server
以链接libjvm
。
注意:如果DOCS_RS
设置为构建文档,则hdfs-sys
将忽略链接。
运行时
hdfs-sys
使用JNI调用由hadoop版本提供的jar包中提供的函数。请在调用由hdfs-sys
提供的任何函数之前确保CLASSPATH
已正确设置。
export JAVA_HOME=/path/to/java
export HADOOP_HOME=/path/to/hadoop
export LD_LIBRARY_PATH=${JAVA_HOME}/lib/server
export CLASSPATH=$(find $HADOOP_HOME -iname "*.jar" | xargs echo | tr ' ' ':')
贡献
有关如何开始为此项目做出贡献的更多信息,请参阅CONTRIBUTING.md指南。
获取帮助
相关项目
- hdfs-rs:为Rust提供的libhdfs绑定和包装API,自2015年起未维护。
- fs-hdfs:基于hdfs-rs的分支,C文件来自hadoop
2.7.3
- dataFusion-hdfs-native:对libhdfs3的绑定
致谢
本项目高度受到clang-sys的启发