如何使用spark/scala+代码+配置通过远程配置单元存储(s3orc)加载sparksql中的文件

x9ybnkn6  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(291)

intellij(spark)-->配置单元(远程)--s3上的存储(orc格式)无法通过spark/scala读取远程配置单元表。
能够读取表架构,但无法读取表。
错误-线程“main”java.lang.illegalargumentexception中出现异常:必须将aws访问密钥id和机密访问密钥分别指定为s3 url的用户名或密码,或者通过设置fs.s3.awsaccesskeyid或fs.s3.awssecretaccesskey属性(分别)来指定。

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.{Encoders, SparkSession}
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.hive.orc._
import org.apache.spark.sql.types.StructType

object mainclas {

  def main(args: Array[String]): Unit = {

     val spark = SparkSession.builder
      .master("local[*]")
      .appName("hivetable")
      .config("hive.metastore.uris", "thrift://10.20.30.40:9083")
       .config("access-key","PQHFFDEGGDDVDVV")
       .config("secret-key","FFGSGHhjhhhdjhJHJHHJGJHGjHH")
       .config("format", "orc")
      .enableHiveSupport()
      .getOrCreate()

   val res = spark.sqlContext.sql("show tables").show()
   val res1 =spark.sql("select *from ace.visit limit 5").show() 
}
}`
hxzsmxv2

hxzsmxv21#

你需要在所有 fs. 带的选项 spark.hadoop 如果您在spark配置中设置它们。如前所述:如果可以的话,使用s3a而不是s3n。

kh212irz

kh212irz2#

试试这个:

val spark = SparkSession.builder
  .master("local[*]")
  .appName("hivetable")
  .config("hive.metastore.uris", "thrift://10.20.30.40:9083")
  .config("fs.s3n.awsAccessKeyId","PQHFFDEGGDDVDVV")
  .config("fs.s3n.awsSecretAccessKey","FFGSGHhjhhhdjhJHJHHJGJHGjHH")
  .config("format", "orc")
  .enableHiveSupport()
  .getOrCreate()

相关问题