【问题标题】:Is there a simple way to load parquet files directly into Cassandra?有没有一种简单的方法可以将镶木地板文件直接加载到 Cassandra 中?
【发布时间】:2019-11-05 10:48:42
【问题描述】:

我有一个 parquet 文件/文件夹(大约 1GB),我想将它加载到我的本地 Cassandra DB 中。不幸的是,我找不到任何方法(除了通过 SPARK(在 Scala 中))将此文件直接加载到 CDB 中。如果我将镶木地板文件吹成 CSV,它对我的​​笔记本电脑来说太大了。

我正在为一个大数据分析案例设置一个 Cassandra 数据库(我有大约 25TB 的原始数据,我们需要这些数据来快速搜索)。现在,我正在运行一些本地测试,以了解如何在将 Cassandra 作为 Hyperscaler 上的服务之前优化设计键空间、索引和表。将数据转换为 CSV 不是一种选择,因为这太过分了。

COPY firmographics.company (col1,col2,col3.....) FROM 'C:\Users\Public\Downloads\companies.csv' WITH DELIMITER='\t' AND HEADER=TRUE;

【问题讨论】:

  • 为什么不使用 Spark?
  • 对于这么小的任务来说似乎需要很多开销......我想知道是否还有其他人想出了更苗条的解决方案
  • 从时间的角度来看,使用 Spark 一次(在本地模式下)比尝试转换为 CSV 并加载...
  • 所以你要转换成 CSV 然后加载?不是直接通过com.datastax.spark.connector?
  • 不,反之亦然 - 只需使用 spar.read.parquet 并通过 spark cassandra 连接器保存 - 这是 Spark shell 中的 2 或 3 个命令

标签: csv import cassandra parquet


【解决方案1】:

事实证明,就像Alex Ott 所说,只需在 SPARK 中编写它就很容易了。在我的代码下面:

import findspark

from pyspark.sql import SparkSession  
findspark.init()

spark = SparkSession\
    .builder\
    .appName("Spark Exploration App")\
    .config('spark.jars.packages', 'com.datastax.spark:spark-cassandra-connector_2.11:2.3.2')\
    .getOrCreate()

import pandas as pd
df = spark.read.parquet("/PATH/TO/FILE/")

import time
start = time.time()

df2.drop('filename').write\
    .format("org.apache.spark.sql.cassandra")\
    .mode('append')\
    .options(table="few_com", keyspace="bmbr")\
    .save()

end = time.time()
print(end - start)

【讨论】:

  • 嗨-我想知道如果我想将它上传到 AWS Keyspace Cassandra DB 怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2023-03-24
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
相关资源
最近更新 更多