以下各种问题是在docker的ubunt20.04容器中操作
1.bash: add-apt-repository: command not found
原因:add-apt-repository包未安装
解决:执行如下命令
sudo apt-get install software-properties-common python-software-properties
2.安装gcc 9
sudo apt-get update
sudo apt-get install build-essential
该命令会安装很多软件包,其中包括gcc
,g++
和make
。
3.安装cmake
Ubuntu16.04安装cmake3.14.5_天启的博客-CSDN博客
4.安装redis
#更新
sudo apt-get update
#安装redis
sudo apt-get install redis-server
#查看redis服务状态
ps -ef |grep redis
配置redis
1.设置redis端口
默认端口为6379,可以修改为自己想要的
2.设置密码
3.允许远程访问
目前只允许本地访问,要允许远程连接,需要注释掉#bind 127.0.0.1::1之前的
启动连接redis
1.启动redis 服务
终端执行redis-server
2.连接redis
本地启动 redis-cli
远程连接(需要本地安装redis客户端) redis-cli -h host(远程ip) -p port(端口号) -a password(密码)
5.安装python3.7.12
1)下载
wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tar.xz
2)解压
tar xvJf Python-3.7.12.tar.xz
3)安装依赖
sudo apt install build-essential libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev zlib1g-dev -y
4)编译
./configure --enable-optimizations
make&&sudo make install
此时,通过python3可以使用python
5)设置软连接
有时python默认的是python2.x,每次输入python3比较麻烦,可以更改设置
这种方式比较慢,另一种方式:
#更新
apt-get update
#安装必要组件
apt install software-properties-common
#添加PPA存储库
add-apt-repository ppa:deadsnakes/ppa
#安装
sudo apt update
sudo apt install python3.7
6安装pip
#安装pip,会同时安装python和pip
apt-get install python3-pip
#升级
pip3 install --upgrade pip
#卸载
apt-get remove python3-pip
结果如下
要同时安装python3.7和pip3.7可以如下
apt-get update
apt install software-properties-common -y //需要手动选择时区,可在dockerfile中设置
add-apt-repository ppa:deadsnakes/ppa -y
apt search python3.7
apt install python3.7 -y
python3.7 -V #查看
ln -sf /usr/bin/python3.7 /usr/bin/python3 #将指定版本切换为Python3.7
#安装pip3.7
apt-get install curl -y
apt-get install vim -y
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
apt install python3.7-distutils -y
apt-get install python3.7-dev -y
python3.7 get-pip.py
//安装成功
# 安装 launchpadlib
sudo pip install launchpadlib
测试是否安装成功
pip3.7 --version
如果有遇到 C 实现的 pip 安装不了, 则需要安装。
sudo apt-get install python3.7-dev
##安装指定版本的python包,通过==指定
pip3.7 install pyarrow==6.0.0
6.1安装kafka-python,pymysql
安装kafka-python,pymysql
pip3 install kafka-python
pip3 install pymysql
6.2安装numpy
ubuntu安装numpy可以使用如下命令
apt-get update
pip3 install numpy
因为上述安装的是python3,若不是,则使用python-numpy
验证numpy
root@9583aba11679:/install# python3
Python 3.7.12 (default, Mar 3 2022, 12:29:54)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from numpy import *
>>> eye(4)
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
>>>
切记不可将文件名命名为numpy.py,否则运行python3 numpy.py时会出错(若numpy.py文件内使用了numpy模块)
6.3安装其他
#安装scipy
pip3 install scipy
#安装pandas
pip3 install pandas
#安装matplotlib
pip3 install matplotlib
#安装Django,此处安装的3.0.6版本,此处可以修改版本
pip3 install Django==3.0.6 -i https://pypi.tuna.tsinghua.edu.cn/simple
6.4安装pyton3.9
apt install -y wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
tar xzf Python-3.9.0.tgz
cd Python-3.9.0
./configure --enable-optimizations
make
make install
root@8400ffb964bb:/# python3
Python 3.9.0 (default, Sep 1 2022, 07:58:41)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
安装python3.9对应的pip,要使用python3.9执行get-pip.py,下述的python3已经执行python3.9
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
root@8400ffb964bb:/# pip -V
pip 22.2.2 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
另一种方式
apt-get update
apt install software-properties-common
add-apt-repository ppa:deadsnakes/ppa
apt install python3.9
python3
root@0c5624fa0249:/# python3
Python 3.8.10 (default, Jun 22 2022, 20:18:18)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
删除原来的,建立软连接
rm -rf /usr/bin/python3
ln -s /usr/local/bin/python3 /usr/bin/python3
安装pip,并升级到最新版
apt-get install python3-pip -y
pip3 install --upgrade pip
关于pip与pip3
如果只安装了python2.x,则只能使用pip
如果只安装了python3.x,则pip和pip3是等价的
如果同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3用
7.安装boost-1.78
此处主要是获得boost-python模块,因为使用了python3.7
1)下载解压
wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.gz
tar xvJf boost_1_78_0.tar.gz
2)安装,进入解压后的目录
./bootstrap.sh --with-python=/usr/local/bin/python3
./bootstrap.sh --with-libraries=system,thread,python
./b2 install
./b2 cxxflags=-fPIC cflags=-fPIC --c++11
会在usr/local目录下分别生成include和lib目录
此时得到
3)安装,进入解压后的目录
./bootstrap.sh --with-python=/usr/local/bin/python3
./b2 install
./bootstrap.sh --with-python=/usr/bin/python3 --prefix=/usr/local/boost-1.78
./b2 install
其中/usr/bin/python3 软连接到/usr/local/bin/python3
同样会在/usr/local目录下生成include和lib目录,和2)的include目录是一样的,此时lib目录为
编译安装libcurl
wget https://curl.se/download/curl-7.81.0.tar.gz
tar zxvf curl-7.81.0.tar.gz
cd /curl-7.81.0
./configure --prefix=/usr/local/curl-7.81.0/ --with-wolfssl
make
make install
8.安装glibc
由于原来的glibc太高,需要降级,ldd --version查看glibc版本
root@9697b27b4cca:/glibc-2.17# ldd --version
ldd (Ubuntu GLIBC 2.31-0ubuntu9.2) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
安装glibc2.17步骤如下
wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
tar xzvf glibc-2.17.tar.gz
cd glibc-2.17
mkdir build
cd build
../configure --prefix=/opt/glibc-2.17
make
make install
9.安装neo4j
推荐第三种方式
方式1:
#下载
wget https://neo4j.com/business-subscription/?edition=enterprise&release=4.4.4&flavour=unix
#解压
cd /neo4j-community-4.4.4/bin
./neo4j console
这一步会提示没有java环境,需要安装Java SDK
安装Java jdk
sudo apt-get update
sudo apt-get -y install openjdk-11-jdk
java --version
继续操作,执行./neo4j console,结果如下
也可以使用./neo4j start这种方式启动。
这种方式使用wget经常会失败,不方便
方式2:
#1.更新软件包
apt-get update
#2.安装一些必需软件包,将允许apt使用https链接软件包
apt install apt-transport-https ca-certificates curl software-properties-common -y
#3.添加Neo4j包存储库的GPG密钥到系统
curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | apt-key add -
#4.将neo4j 4.4存储库添加到系统的APT源中
add-apt-repository "deb https://debian.neo4j.com stable 4.1"
#5.安装neo4j,此步骤会同时安装java11,和cypher-shell(用来与neo4j交互)
apt install neo4j -y
这种方式安装的有点多,不方便。
方式3:
第一步:安装neo4j
#1.添加GPG
wget -O - https://debian.neo4j.com/neotechnology.gpg.key | apt-key add -
#2.将Neo4j添加到列表中,此处可以指定要安装的neo4j版本,此处指定4.4
echo 'deb https://debian.neo4j.com stable 4.4' | tee /etc/apt/sources.list.d/neo4j.list
#3.更新
apt-get update
#4.查看可以的4.4版本
apt list -a neo4j
#5.安装neo4j 4.4.4,输入选项6,31
apt install neo4j=1:4.4.4 -y
#6.查看neo4j版本号
neo4j --version
neo4j 4.4.4
第二步:安装java jdk
上一步会自动安装java jdk,若未安装,则手动安装
#安装java jdk
apt-get update
sudo apt-get -y install openjdk-11-jdk
java --version
第三步:启动neo4j
which neo4j
neo4j start
结果如下:
9.1配置
配置文件的位置在etc/neo4j/neo4j.conf
# 监听地址(四个0表示所有IP地址可以访问,默认为localhost,仅本机可以访问)
dbms.connectors.default_listen_address=0.0.0.0
# 指定http监听端口(默认为7474,在此可以指定服务器开放的端口号,例如此处的5002)
dbms.connector.http.listen_address=:5002
# 指定bolt监听端口(默认为7687,在此可以指定服务器开放的端口号,例如此处的5003)
dbms.connector.bolt.listen_address=:5003
# 指定数据库文件存储路径【默认为系统的/var/lib/neo4j/data,考虑数据存储安全,因此不建议存储到默认的系统磁盘目录下,进行自定义配置比较好】
dbms.directories.data=/var/lib/neo4j/data
# 指定默认的数据库名称【graph.db】
dbms.active_database=graph.db
1.允许远程访问
2.neo4j服务开机自启动
neo4j没有设置为系统重新启动时启动,设置如下
9.2使用neo4j
主要介绍命令行如何使用neo4j,提供cypher-shell与neo4j交互,默认的用户名、密码都是neo4j,首次使用需要修改密码,这里我将新密码修改为newneo4j
输入:exit退出cypher-shell
在其他服务连接neo4j时可能报如下错误
{
"errors" : [ {
"code" : "Neo.ClientError.Security.Unauthorized",
"message" : "No authentication header supplied."
} ]
}
解决方法如下:
- 停止neo4j服务,并且删除data/dbms/auth,重新启动
- 修改neo4j.conf配置文件,取消验证机制,修改如下:
dbms.security.auth_enabled=false
10.安装elasticsearch
1)安装并启动es
#1.导入es公共GPG密钥
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
#2.
apt-get install apt-transport-https
#2.添加es软件源
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.list
#4.更新软件源
apt-get update
#5.安装es
apt-get install elasticsearch
#6.启动es
/etc/init.d/elasticsearch start
#查看es状态
/etc/init.d/elasticsearch status
2)使用curl 验证
#终端输入curl http://localhost:9200
curl http://localhost:9200
#返回内容如下
{
"name" : "cd4e0f85340e",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "c9VWYT4KS5Wi4gum0LcWxg",
"version" : {
"number" : "7.17.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",
"build_date" : "2022-02-23T22:20:54.153567231Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
3)修改配置文件
4)允许远程访问
5)设置随docker容器或主机开机自启动
在安装es时会提示使用
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
6)安装kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.1-linuxx86_64.tar.gz
tar -xzf kibana-7.17.1-linux-x86_64.tar.gz
cd kibana-7.17.1-linux-x86_64/
./bin/kibana --allow-root
10.1简单使用
#1.创建索引
curl -XPOST 'localhost:9200/test'
#插入数据
curl -XPUT 'localhost:9200/student/user/1?pretty' -H 'Content-Type: application/json' -d '{"name": "wqh","gender":"male","age":"18","about":"I will carry you","interests":["cs","it"]}'
11.Ubuntu安装软件时自动选择Geographic area和Time zone
在ubuntu安装一些软件时经常需要手动选择
主要是因为从tzdata2018开始,系统默认采用交互方式,导致安装一些软件的过程中涉及到配置tzdata时需要手动输入。
docker容器中解决方法如下:ubuntu20.04
#1.设置tzdata前端类型(通过export)
export DEBIAN_FRONTEND=noninteractive
#2.安装tzdata,此时采用的默认时区为etc/utc
apt-get install -y tzdata
#3.修改时区
ln -fs /usr/share/zoneinfo/Europe/Stockholm /etc/localtime
#4.重新配置tzdata,使时区设置生效
dpkg-reconfigure -f noninteractive tzdata
#查看时区
root@cd4e0f85340e:/# date
Mon Mar 21 18:22:20 HKT 2022
若是在dockerfile中可以使用ENV设置环境变量,在第一个RUN之前添加如下命令
DEBIAN_FRONTEND=noninteractive
然后安装tzdata的步骤和上面一样即可。
12.vim 中文乱码
1)临时解决办法
每次打开vim后,输入
:set encoding=utf-8
2)一次性解决办法
cd ~/.vimrc
##输入如下内容
set encoding=utf-8
保存退出,再打开vim文件,可以显示中文了。
13.安装mysql
安装前准备工作
##安装前,检测是否有自带的MySQL
rpm -qa |grep mysql
##若提示rpm not found,则先安装rpm apt-get install rpm -y
##若有自带MySQL,先卸载
rpm -e mysql //普通方式卸载
rpm -e --nodeps mysql //强力方式卸载
1)下载
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
2)解压
tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
3)移动并重命名
##移动
mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/
##重命名
cd /usr/local
mv mysql-5.7.26-linux-glibc2.12-x86_64/ mysql-5.7.26
4)创建MySQL用户组和用户
##创建MySQL用户组和用户
groupadd mysql
useradd -r -g mysql mysql
5)创建MySQL数据目录并修改权限
##创建MySQL数据目录
cd /
mkdir -p data
cd data/
mkdir -p mysql
##赋予权限
chown mysql:mysql -R /data/mysql
6)配置参数
vim /etc/my.cnf
内容为
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-5.7.26
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
7)初始化MySQL
cd /usr/local/mysql-5.7.26/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.26/ --datadir=/data/mysql/ --user=mysql --initialize
这一步可能报错./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:
apt-get install libaio* numactl -y
重新执行上一步即可
8)查看初始密码
vim /data/mysql/mysql.err
9)启动MySQL,修改密码
../support-files/mysql.server start
这一步步需要
10)添加软连接并启动
ln -s /usr/local/mysql-5.7.26/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql-5.7.26/bin/mysql /usr/bin/mysql
service mysql restart
查看运行情况
ps -ef |grep mysql
root@8f333be57d2c:/usr/local/mysql-5.7.26/bin# ps -ef |grep mysql
root 3974 1 0 11:28 pts/0 00:00:00 /bin/sh /usr/local/mysql-5.7.26/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql.pid
mysql 4197 3974 0 11:28 pts/0 00:00:10 /usr/local/mysql-5.7.26/bin/mysqld --basedir=/usr/local/mysql-5.7.26 --datadir=/data/mysq --plugin-dir=/usr/local/mysql-5.7.26/lib/plugin --user=mysql --log-error=/data/mysql/mysql.err --pid-file=/data/mysql/mysql.pid --socket=/tmp/mysql.sock --port=3306
root 4290 1 0 12:39 pts/0 00:00:00 grep --color=auto mysql
11)启动mysql,修改密码
mysql -u root -p
可能会提示确实依赖,安装如下
apt-get install libncurses5
修改密码,输入
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
root@8f333be57d2c:/usr/local/mysql-5.7.26/bin# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.26
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set password=password('123456')
-> ;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> alter user 'root'@'localhost' password expire never;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
现在再执行mysql -u root -p 可以输入123456进入了
12.1解决MySQL表中中文乱码或显示为问号
1)进入MySQL输入如下指令查看编码格式
show variables like 'char%';
mysql> show variables like 'char%';
+--------------------------+-----------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.26/share/charsets/ |
+--------------------------+-----------------------------------------+
8 rows in set (0.01 sec)
2)修改/etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-5.7.26
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
init_connect='SET NAMES utf8' ##新增
character_set_server=utf8 ##修改
symbolic-links=0
[mysql]
default-character-set=utf8 ##新增
3)重启mysql
service mysql restart
apt-get install libatlas-base-dev
14.编译安装OpenCV4.6
参考在Ubuntu20.04 LTS中安装OpenCV4.5.4_wanghq2013的博客-CSDN博客
1)下载4.6源码
apt-get install git -y
git clone https://github.com/opencv/opencv.git
2)安装依赖
依次安装gcc,cmake,python3---gcc9.3,cmake3.14.5,python3.7
为支持GUI , Camera (v4l)和Media (ffmpeg, gstreamer) 等,安装GTK,
apt-get install libavcodec-dev libavformat-dev libswscale-dev
apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
为支持gtk3*
apt-get install libgtk-3-dev
可选项用于支持PNG, JPEG, JPEG2000, TIFF, WebP 等图片格式。
apt-get install libpng-dev
apt-get install libjpeg-dev
apt-get install libopenexr-dev
apt-get install libtiff-dev
3)设置安装路径
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.6 ..
或者
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.6 -D_GLIBCXX_USE_CXX11_ABI=0 ..
该方式的目的在于关闭C++11 特性
也可以在CMakeLists.txt中设置
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
或者
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")
4)安装
make
make install
15.编译arrow
编译CPP组件
官方文档见Building Arrow C++ — Apache Arrow v10.0.0
1)拉取指定分支
此时使用apache-arrow-9.0.0分支,更高的版本部分特性使用了C++17
git clone --recursive https://github.com/apache/arrow.git
git checkout apache-arrow-9.0.0
cd arrow/cpp
mkdir build
2)修改CMakeLists.txt
指定使用C++14,且是以CXX11_ABI旧版本
##2.修改CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
SET(CMAKE_CXX_STANDARD 14)
SET(CMAKE_CXX_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=0")
3)编译
需要设置一些编译选项,parquet和plasma默认不编译,若需要,则需要指定
#3.编译
cd build
cmake -DCMAKE_INSTALL_PREFIX=/arrow/cpp/build/install -DCMAKE_BUILD_TYPE=release -DARROW_PLASMA=ON -DARROW_PARQUET=ON -DARROW_PYTHON=ON ..
make
make isntall
arrow-10.0以上的版本可以使用如下命令
cmake -DCMAKE_INSTALL_PREFIX=/arrow/cpp/build/install -DCMAKE_BUILD_TYPE=release -DARROW_BUILD_EXAMPLES=ON -DARROW_BUILD_TESTS=ON -DARROW_PLASMA=ON -DARROW_PARQUET=ON -DARROW_CSV=ON -DARROW_BUILD_UTILITIES=ON -DARROW_FILESYSTEM=ON -DARROW_JSON=ON -DARROW_DATASET=ON ..
此时可在/arrow/cpp/build/install目录下看到include,lib,share三个目录
4)其他知识:
可选目标
-
-DARROW_BUILD_BENCHMARKS=ON
:构建可执行基准。 -
-DARROW_BUILD_EXAMPLES=ON
:构建使用 Arrow C++ API 的示例。 -
-DARROW_BUILD_INTEGRATION=ON
:构建额外的可执行文件,用于在不同的 Arrow 实现之间练习协议互操作性。 -
-DARROW_BUILD_UTILITIES=ON
:构建可执行实用程序。 -
-DARROW_BUILD_TESTS=ON
:构建可执行的单元测试。 -
-DARROW_ENABLE_TIMING_TESTS=ON
:如果构建单元测试,请启用那些依赖挂钟计时的单元测试(此标志在 CI 上被禁用,因为它会使测试结果不稳定)。 -
-DARROW_FUZZING=ON
:构建模糊测试目标和相关的可执行文件。
可选组件
-DARROW_BUILD_UTILITIES=ON
: 构建 Arrow 命令行实用程序-DARROW_COMPUTE=ON
:计算内核函数和其他支持-DARROW_CSV=ON
: CSV 阅读器模块-DARROW_CUDA=ON
:用于 GPU 开发的 CUDA 集成。取决于 NVIDIA CUDA 工具包。用于构建库的 CUDA 工具链可以使用$CUDA_HOME
环境变量进行自定义。-DARROW_DATASET=ON
: 数据集 API,意味着文件系统 API-DARROW_FILESYSTEM=ON
: 用于访问本地和远程文件系统的文件系统 API-DARROW_FLIGHT=ON
:Arrow Flight RPC系统,至少依赖gRPC-DARROW_FLIGHT_SQL=ON
: 箭飞行 SQL-DARROW_GANDIVA=ON
: Gandiva 表达式编译器,依赖于 LLVM、Protocol Buffers 和 re2-DARROW_GANDIVA_JAVA=ON
: Java 的 Gandiva JNI 绑定-DARROW_GCS=ON
:使用 GCS 支持构建 Arrow(需要 GCloud SDK for C++)-DARROW_HDFS=ON
: Arrow 与 libhdfs 集成以访问 Hadoop 文件系统-DARROW_JEMALLOC=ON
: 构建基于 Arrow jemalloc 的分配器,默认开启-DARROW_JSON=ON
: JSON 阅读器模块-DARROW_MIMALLOC=ON
: 构建基于 Arrow mimalloc 的分配器-DARROW_ORC=ON
: Arrow 与 Apache ORC 的集成-DARROW_PARQUET=ON
: Apache Parquet 库和 Arrow 集成-DPARQUET_REQUIRE_ENCRYPTION=ON
: Parquet 模块化加密-DARROW_PLASMA=ON
: Plasma 共享内存对象存储-DARROW_PLASMA_JAVA_CLIENT=ON
: 为 Plasma 构建 Java 客户端-DARROW_PYTHON=ON
:此选项自 10.0.0 起已弃用。这将在未来的版本中删除。请改用 CMake 预设。或者,您可以直接启用ARROW_COMPUTE
、ARROW_CSV
、ARROW_DATASET
、ARROW_FILESYSTEM
、ARROW_HDFS
和ARROW_JSON
。-DARROW_S3=ON
:支持与 Amazon S3 兼容的文件系统-DARROW_WITH_RE2=ON
使用 re2 库构建对正则表达式的支持,默认情况下启用,并在何时ARROW_COMPUTE
或是ARROW_GANDIVA
时使用ON
-DARROW_WITH_UTF8PROC=ON
: 使用 utf8proc 库构建对 Unicode 属性的支持,默认开启,并在ARROW_COMPUTE
或ARROW_GANDIVA
时使用ON
-DARROW_TENSORFLOW=ON
: 在启用 TensorFlow 支持的情况下构建 Arrow
ARROW中可用的压缩选项有
-DARROW_WITH_BROTLI=ON
: 构建对 Brotli 压缩的支持-DARROW_WITH_BZ2=ON
: 构建对 BZ2 压缩的支持-DARROW_WITH_LZ4=ON
: 构建对 lz4 压缩的支持-DARROW_WITH_SNAPPY=ON
: 构建对 Snappy 压缩的支持-DARROW_WITH_ZLIB=ON
: 构建对 zlib (gzip) 压缩的支持-DARROW_WITH_ZSTD=ON
: 构建对 ZSTD 压缩的支持
如果系统中安装了多个Python版本,则需要将参数传递给CMAKE,以便找到正确的可执行文件、头文件和库,如-DPython3_EXECUTABLE=<path/to/bin/python>
让 CMake 选择您正在使用的 Python 可执行文件。
对于旧版本的 CMake (<3.15),您可能需要通过-DPYTHON_EXECUTABLE
而不是-DPython3_EXECUTABLE
.
编译python组件
cd arrow/python
修改CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
SET(CMAKE_CXX_STANDARD 14)
SET(CMAKE_CXX_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=0")
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=release ..