Google cloud storage 当直接从Dataproc Spark作业访问GCS存储桶时,这是一个严重警告吗?

Google cloud storage 当直接从Dataproc Spark作业访问GCS存储桶时,这是一个严重警告吗?,google-cloud-storage,google-cloud-dataproc,Google Cloud Storage,Google Cloud Dataproc,我正在Dataproc上运行Spark 2.2作业,需要访问位于GCP存储桶中的一组avro文件。具体地说,我需要直接从bucket访问文件(即,不首先让它们复制/粘贴到主机上,因为它们可能非常大,而且出于法规遵从性原因) 根据本文件中的建议,我使用gs://XXX符号来表示火花代码内的铲斗: 一切似乎都正常。然而,我一再看到以下警告: 18/08/08 15:42:59 WARN com.google.cloud.hadoop.gcsio.GoogleCloudStorageReadChan

我正在Dataproc上运行Spark 2.2作业,需要访问位于GCP存储桶中的一组avro文件。具体地说,我需要直接从bucket访问文件(即,不首先让它们复制/粘贴到主机上,因为它们可能非常大,而且出于法规遵从性原因)

根据本文件中的建议,我使用
gs://XXX
符号来表示火花代码内的铲斗:

一切似乎都正常。然而,我一再看到以下警告:

18/08/08 15:42:59 WARN com.google.cloud.hadoop.gcsio.GoogleCloudStorageReadChannel: Channel for 'gs://ff_src_data/trns2.avro' is not open.
18/08/08 15:42:59 WARN com.google.cloud.hadoop.gcsio.GoogleCloudStorageReadChannel: Channel for 'gs://ff_src_data/trns1.avro' is not open.
18/08/08 15:42:59 WARN com.google.cloud.hadoop.gcsio.GoogleCloudStorageReadChannel: Channel for 'gs://ff_src_data/trns3.avro' is not open.
这是严重警告吗?它是否会对现实生活中的性能(速度)产生任何实质性影响,尤其是在涉及大量文件的情况下?如果是这样,我应该如何解决这个问题,还是干脆忽略它

****更新:

以下是在JAVA中生成此代码的最基本代码:

    public static void main(String args[]) throws Exception
    {
        SparkConf spConf = new SparkConf().setAppName("AVRO-TEST-" + UUID.randomUUID().toString());
        Master1 master = new Master1(spConf);
        master.readSpark("gs://ff_src_data");
    }

class Master1
{
    private SparkConf m_spConf;
    private JavaSparkContext m_jSPContext;

    public Master1(SparkConf spConf)
    {                       
        m_spConf = spConf;
        m_jSPContext = new JavaSparkContext(m_spConf);
    }

    public void readSpark(String srcDir)
    {
        SQLContext sqlContext = SQLContext.getOrCreate(JavaSparkContext.toSparkContext(m_jSPContext));

        Dataset<Row> trn = sqlContext.read().format("com.databricks.spark.avro").load(srcDir);
        trn.printSchema();
        trn.show();

        List<Row> rows = trn.collectAsList();
        for(Row row : rows)
        {
            System.out.println("Row content [0]:\t" + row.getDouble(0));
        }

    }
}
publicstaticvoidmain(字符串args[])引发异常
{
SparkConf spConf=new SparkConf().setAppName(“AVRO-TEST-”+UUID.randomuid().toString());
Master1 master=新Master1(spConf);
master.readSpark(“gs://ff\u src\u数据”);
}
班主任1
{
私人SparkConf m_spConf;
私有JavaSparkContext m_jSPContext;
公共Master1(SparkConf spConf)
{                       
m_spConf=spConf;
m_jSPContext=新的JavaSparkContext(m_spConf);
}
public void readSpark(字符串srcDir)
{
SQLContext SQLContext=SQLContext.getOrCreate(JavaSparkContext.toSparkContext(m_jSPContext));
Dataset trn=sqlContext.read().format(“com.databricks.spark.avro”).load(srcDir);
trn.printSchema();
trn.show();
列表行=trn.collectAsList();
用于(行:行)
{
System.out.println(“行内容[0]:\t”+Row.getDouble(0));
}
}
}
现在,这只是一个愚蠢的设置,用来测试直接从GCS存储桶加载一堆Avro文件的能力

另外,为了澄清:这是Dataproc Image 1.2版和Spark 2.2.1版

意味着代码在关闭后关闭
GoogleCloudStorageReadChannel
。这是一条无害的警告消息,但它可能表示在读取文件时,代码中对输入流的处理不一致

您是否可以提供复制此警告的简化版工作(越简洁越好)?有了您的这个复制,我将能够检查这是否是GCS连接器中的问题,或者可能是Hadoop/Spark Avro输入格式中的问题

更新:
此警告消息位于GCS连接器1.9.10中。

感谢您的报告,已修复。