-
Notifications
You must be signed in to change notification settings - Fork 515
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(services/hdfs_native): Add read,write,list implementation for hdfs_native #4505
base: main
Are you sure you want to change the base?
Changes from 14 commits
8cfcd8b
5b8bce6
1a709df
e9e417b
af6e959
42848ea
a8a6d17
5b80bec
75ef053
bcc4aaf
c23d576
76ea03d
a274223
b3b4435
77acd20
c3178c0
fb8965d
914ead7
63c2919
3346eef
e795ffb
7be3838
3681e1f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# Licensed to the Apache Software Foundation (ASF) under one | ||
# or more contributor license agreements. See the NOTICE file | ||
# distributed with this work for additional information | ||
# regarding copyright ownership. The ASF licenses this file | ||
# to you under the Apache License, Version 2.0 (the | ||
# "License"); you may not use this file except in compliance | ||
# with the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, | ||
# software distributed under the License is distributed on an | ||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
# KIND, either express or implied. See the License for the | ||
# specific language governing permissions and limitations | ||
# under the License. | ||
|
||
name: hdfs_native | ||
description: 'Behavior test for hdfs_native' | ||
|
||
runs: | ||
using: "composite" | ||
steps: | ||
- name: Setup java env | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: temurin | ||
java-version: "11" | ||
- name: Setup | ||
shell: bash | ||
run: | | ||
curl -LsSf https://dlcdn.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz | tar zxf - -C /home/runner | ||
|
||
export HADOOP_HOME="/home/runner/hadoop-3.3.5" | ||
export CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath --glob) | ||
|
||
cp ./fixtures/hdfs/hdfs-site.xml ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml | ||
|
||
cat << EOF >> $GITHUB_ENV | ||
HADOOP_HOME=${HADOOP_HOME} | ||
CLASSPATH=${CLASSPATH} | ||
LD_LIBRARY_PATH=${JAVA_HOME}/lib/server:${HADOOP_HOME}/lib/native | ||
OPENDAL_HDFS_NATIVE_ROOT=/tmp/opendal/ | ||
OPENDAL_HDFS_NATIVE_URL=http://127.0.0.1:9000 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
url should be There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sorry, missed this one. Thank you for pointing this. |
||
OPENDAL_HDFS_NATIVE_ENABLE_APPEND=false | ||
EOF |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,25 +18,29 @@ | |
use hdfs_native::file::FileWriter; | ||
|
||
use crate::raw::oio; | ||
use crate::services::hdfs_native::error::parse_hdfs_error; | ||
use crate::*; | ||
|
||
pub struct HdfsNativeWriter { | ||
_f: FileWriter, | ||
f: FileWriter, | ||
} | ||
|
||
impl HdfsNativeWriter { | ||
pub fn new(f: FileWriter) -> Self { | ||
HdfsNativeWriter { _f: f } | ||
HdfsNativeWriter { f } | ||
} | ||
} | ||
|
||
impl oio::Write for HdfsNativeWriter { | ||
async fn write(&mut self, _bs: Buffer) -> Result<usize> { | ||
todo!() | ||
async fn write(&mut self, bs: Buffer) -> Result<usize> { | ||
let bytes = bs.to_bytes(); | ||
let total_bytes = bytes.len(); | ||
self.f.write(bytes).await.map_err(parse_hdfs_error)?; | ||
Ok(total_bytes) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, based on the definition, it continues to write until complete
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please don't rely this behavior. Return written like this: let n = self.f.write(bytes).await.map_err(parse_hdfs_error)?;
Ok(n) |
||
} | ||
|
||
async fn close(&mut self) -> Result<()> { | ||
todo!() | ||
self.f.close().await.map_err(parse_hdfs_error) | ||
} | ||
|
||
async fn abort(&mut self) -> Result<()> { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please don't touch those files, hdfs_native is pure rust which should be fine on other bindings.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure
Due to failures in behaviour tests I was trying a bunch of stuff to figure them out. Could you please help with the failures ?