把文件放在雪花上什么更快?SnowSQL或JDBC驱动程序

2024-07-01 07:58:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在与一位客户讨论,使用SnowSQL将文件放入Snowflake或使用JDBC驱动程序编写自定义代码是否会更快

一种观点认为JDBC会比SnowSQL快,因为Java比Python快——Python是编写SnowSQL的语言。但并不是所有人都同意

我们怎样才能知道哪个更快


Tags: 文件代码语言客户驱动程序java观点所有人
1条回答
网友
1楼 · 发布于 2024-07-01 07:58:50

我们可以编写一些简单的代码来比较Python和Java之间的PUT

让我们从Java代码开始:

import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;

import net.snowflake.client.jdbc.SnowflakeConnection;

public class App {
    static String user = ""; 
    static String password = ""; 

    private static final String TMP_TEST_CSV = "/Users/fhoffa/Downloads/pageviews-20210601-000000.gz";

    public static void main(String[] args) throws Exception {
        Connection conn = DriverManager.getConnection(
                "jdbc:snowflake://your-account.snowflakecomputing.com/?db=temp&role=sysadmin&schema=public", user,  password);

        File file = new File(TMP_TEST_CSV);
        FileInputStream fileInputStream = new FileInputStream(file);

        conn.unwrap(SnowflakeConnection.class).uploadStream("my_int_stage", "testUploadStream", fileInputStream, "destFile.csv", true);
    }
}

用Java放这个文件花了47秒。我还将压缩选项更改为false,以测试这是否会有很大变化,整个过程耗时46秒

同时,我使用SnowSQL做了以下工作:

#(no warehouse)@TEMP.PUBLIC> put 'file:///Users/fhoffa/Downloads/pageviews-20210601-000000.gz' @~/my_int_stage;
pageviews-20210601-000000.gz(38.59MB): [##########] 100.00% Done (41.330s, 0.93MB/s).
+               +               +      -+      -+          +          +     +    -+
| source                       | target                       | source_size | target_size | source_compression | target_compression | status   | message |
|               +               +      -+      -+          +          +     +    -|
| pageviews-20210601-000000.gz | pageviews-20210601-000000.gz |    40460014 |    40460014 | GZIP               | GZIP               | UPLOADED |         |
+               +               +      -+      -+          +          +     +    -+
1 Row(s) produced. Time Elapsed: 43.344s

它花费了43秒,比JDBC花费的时间少了10%。因此,没有理由认为Java会比Python快得多

您的结果可能会有所不同!当通过慢速网络发送文件时,大部分时间将用于处理网络,而使用Java运行压缩可能会更快

我在本例中使用的文件是压缩的CSV:

雪花中创建舞台的基本设置:

use role sysadmin;

use schema temp.public;

create stage my_int_stage;

相关问题 更多 >

    热门问题