从 Spark 连接到 BigTable 时出现 Jetty ALPN/NPN 异常,scala 代码

Posted

技术标签:

【中文标题】从 Spark 连接到 BigTable 时出现 Jetty ALPN/NPN 异常,scala 代码【英文标题】:Jetty ALPN/NPN Exception while connecting to BigTable from Spark, scala code 【发布时间】:2017-09-15 17:14:08 【问题描述】:

尝试从 Spark 连接到 BigTable 时遇到问题 以下是我在执行连接时遇到的错误

    INFO grpc.BigtableSession: Bigtable options: BigtableOptionsdataHost=bigtable.googleapis.com, tableAdminHost=bigtableadmin.googleapis.com, instanceAdminHost=bigtableadmin.googleapis.com, projectId=ProjectID, instanceId=InstanceForBigTable, userAgent=hbase-1.2.5, credentialType=DefaultCredentials, port=443, dataChannelCount=20, retryOptions=RetryOptionsretriesEnabled=true, allowRetriesWithoutTimestamp=false, statusToRetryOn=[UNAVAILABLE, DEADLINE_EXCEEDED, UNAUTHENTICATED, INTERNAL, ABORTED], initialBackoffMillis=5, maxElapsedBackoffMillis=60000, backoffMultiplier=2.0, streamingBufferSize=60, readPartialRowTimeoutMillis=60000, maxScanTimeoutRetries=3, bulkOptions=BulkOptionsasyncMutatorCount=2, useBulkApi=true, bulkMaxKeyCount=25, bulkMaxRequestSize=1048576, autoflushMs=0, maxInflightRpcs=1000, maxMemory=715862835, enableBulkMutationThrottling=false, bulkMutationRpcTargetMs=100, callOptionsConfig=CallOptionsConfiguseTimeout=false, shortRpcTimeoutMs=60000, longRpcTimeoutMs=600000, usePlaintextNegotiation=false.

Exception in thread "BigtableSession-startup-1" java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
    at com.google.bigtable.repackaged.io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:159)
    at com.google.bigtable.repackaged.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:136)
    at com.google.bigtable.repackaged.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:124)
    at com.google.bigtable.repackaged.io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:94)
    at com.google.bigtable.repackaged.com.google.cloud.bigtable.grpc.BigtableSession.createSslContext(BigtableSession.java:132)
    at com.google.bigtable.repackaged.com.google.cloud.bigtable.grpc.BigtableSession.access$000(BigtableSession.java:84)
    at com.google.bigtable.repackaged.com.google.cloud.bigtable.grpc.BigtableSession$2.run(BigtableSession.java:159)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)

我正在尝试创建连接的代码

val tableDF: DataFrame = sqlContext.read.options(Map(HBaseTableCatalog.tableCatalog -> hbaseReadSchema))
        .format("org.apache.spark.sql.execution.datasources.hbase").load()

谁能提供上述错误的原因?

【问题讨论】:

请从第一行删除 PII。此外,我们在这里通过 hortornworks-shc 提供了一个 SparkSQL 的工作示例:github.com/GoogleCloudPlatform/cloud-bigtable-examples/tree/… 【参考方案1】:

这很可能是依赖问题。

使用bigtable-hbase-1.x-hadoop:1.0.0-pre3 应该可以解决大部分可能的依赖问题。它隐藏了所有bigtable 依赖项,旨在与hadoop 环境很好地配合使用。

正如 Solomon 在他的评论中指出的那样,请按照 github 上的示例对您的依赖项进行建模。

【讨论】:

以上是关于从 Spark 连接到 BigTable 时出现 Jetty ALPN/NPN 异常,scala 代码的主要内容,如果未能解决你的问题,请参考以下文章

将 spark 应用程序连接到远程 sql 服务器时出现 jdbc 连接超时错误

通过 JDBC 从 Spark 提取表数据时出现 PostgreSQL 错误

写入 Bigtable 时出现问题

在远程 Yarn 集群上使用 spark 从 S3 访问文件时出现问题

从 mongos 连接到 Mongo Config Server 时出现问题

从 docker 连接到 office365 SMTP 时出现异常