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的启发