IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> pyarrow读写hdfs -> 正文阅读

[大数据]pyarrow读写hdfs

官方API文档:https://arrow.apache.org/docs/python/index.html
1、测试服务器能够正确连接hdfs:

>hadoop fs -ls /
Found 5 items
drwxrwxrwx   - hbase supergroup          0 2021-09-15 13:58 /hbase
drwxr-xr-x   - root  root                0 2021-12-08 09:38 /hive
drwxrwxrwx   - root  root                0 2021-12-02 15:15 /system
drwxrwxrwx   - hdfs  supergroup          0 2021-12-08 15:54 /tmp
drwxrwxrwx   - hdfs  supergroup          0 2022-03-09 10:28 /user

2、安装 pyarrow:

pip install pyarrow

3、读写hdfs文件
csv_2_parquet.py

import pyarrow as pa
import pyarrow.parquet as parquet
import pyarrow.csv as csv


if __name__ == '__main__':
    hdfs_host = '你的hdfs服务器ip'
    hdfs_port = 8020
    file = '/user/data/df_raw_label.csv'
    fs = pa.hdfs.HadoopFileSystem(host=hdfs_host, port=hdfs_port, user='hdfs')
    with fs.open(file, mode='rb') as f:
        arrow_table = csv.read_csv(f)
    parquet_file = '/user/data/df_raw_label.parquet'
    with fs.open(parquet_file, mode="wb") as f:
        parquet.write_table(arrow_table, f)        

报错:/usr/local/lib64/python3.6/site-packages/pyarrow/下找不到libhdfs.so

__main__:1: FutureWarning: pyarrow.hdfs.HadoopFileSystem is deprecated as of 2.0.0, please use pyarrow.fs.HadoopFileSystem instead.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib64/python3.6/site-packages/pyarrow/hdfs.py", line 49, in __init__
    self._connect(host, port, user, kerb_ticket, extra_conf)
  File "pyarrow/_hdfsio.pyx", line 85, in pyarrow._hdfsio.HadoopFileSystem._connect
  File "pyarrow/error.pxi", line 114, in pyarrow.lib.check_status
OSError: Unable to load libhdfs: ./libhdfs.so: cannot open shared object file: No such file or directory

解决方法:
(1)在系统中查找该文件的位置:

>find /opt/ -name libhdfs.so
/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib64/libhdfs.so

(2)简单方案
将libhdfs.so复制到所需位置:

cp /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib64/libhdfs.so /usr/local/lib64/python3.6/site-packages/pyarrow

(3)官方方案(暂未验证成功):
参考:https://arrow.apache.org/docs/python/filesystems_deprecated.html?highlight=arrow_libhdfs_dir
添加环境变量

vi /etc/profile

在文件尾添加:

export CLASSPATH=`hadoop classpath --glob`
export ARROW_LIBHDFS_DIR="/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib64/"

使环境变量生效:

>source /etc/profile
>export
......
declare -x ARROW_LIBHDFS_DIR="/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib64/"
declare -x CLASSPATH="/etc/hadoop/conf:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop/libexec/../../hadoop/lib/kerb-client-1.0.0.jar
......
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:36:15  更:2022-03-10 22:37:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:38:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码