我尝试使用 Python 驱动程序中的 BATCH 将 150.000 个生成的数据插入到 Cassandra 中。大约需要30 秒。我应该如何优化它并更快地插入数据?这是我的代码:
from cassandra.cluster import Cluster
from faker import Faker
import time
fake = Faker()
cluster = Cluster(['127.0.0.1'], port=9042)
session = cluster.connect()
session.default_timeout = 150
num = 0
def create_data():
global num
BATCH_SIZE = 1500
BATCH_STMT = 'BEGIN BATCH'
for i in range(BATCH_SIZE):
BATCH_STMT += f" INSERT INTO tt(id, title) VALUES ('{num}', '{fake.name()}')";
num += 1
BATCH_STMT += ' APPLY BATCH;'
prep_batch = session.prepare(BATCH_STMT)
return prep_batch
tt = []
session.execute('USE …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 JSON 数据从 Kafka 添加到 ClickHouse。这是简化的 JSON:
{
...
"sendAddress":{
"sendCommChannelTypeId":4,
"sendCommChannelTypeCode":"SMS",
"sendAddress":"789345345945"},
...
}
Run Code Online (Sandbox Code Playgroud)
以下是在 ClickHouse 中创建表的步骤,使用 Kafka Engine 创建另一个表并创建 MATERIALIZED VIEW 来连接这两个表,并将 CH 与 Kafka 连接。
创建第一个表
CREATE TABLE tab
(
...
sendAddress Tuple (sendCommChannelTypeId Int32, sendCommChannelTypeCode String, sendAddress String),
...
)Engine = MergeTree()
PARTITION BY applicationId
ORDER BY (applicationId);
Run Code Online (Sandbox Code Playgroud)
使用 Kafka 引擎设置创建第二个表:
CREATE TABLE tab_kfk
(
...
sendAddress Tuple (sendCommChannelTypeId Int32, sendCommChannelTypeCode String, sendAddress String),
...
)ENGINE = Kafka
SETTINGS kafka_broker_list = 'localhost:9092',
kafka_topic_list = 'topk2',
kafka_group_name …Run Code Online (Sandbox Code Playgroud) 我有一个主机 - 192.168.200.xx1,Minio 在 Docker 中运行。我用这个命令启动了minio - docker run --name minio_server --hostname minio -d -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001" 。因此,我有另一个带有 NodeJS 代码的主机 192.168.200.xx2,我尝试从该主机向 minio 发送数据。这是我的 NodeJS 代码:
async function uploadImage(req, res) {
const path = await image_functions_1.ImageLoad.urlCreate(userId, surveyId) + "/" + req.file.originalname;
return res.status(200).json({ success: false, message: "Failed to upload!" });
let minioClient = new Minio.Client({
endPoint: process.env.MINIO_END_POINT,
port: 9000,
useSSL: false,
accessKey: process.env.MINIO_ACCESS_KEY,
secketKey: process.env.MINIO_SECRET_KEY
});
minioClient.putObject(process.env.MINIO_BUCKET, path, req.file.buffer, function (err, etag) {
if (err) …Run Code Online (Sandbox Code Playgroud)