小编Ana*_*eep的帖子

Bash中$ {}和$()之间的差异

我有两个问题,可以使用一些帮助来理解它们.

  1. ${}和之间有什么区别$()?我理解这() 意味着在单独的shell中运行命令并放置$意味着将值传递给变量.有人能帮助我理解这个吗?如果我错了,请纠正我.

  2. 如果我们可以使用for ((i=0;i<10;i++)); do echo $i; done并且它工作正常那么为什么我不能用它while ((i=0;i<10;i++)); do echo $i; done?两者的执行周期有什么不同?

linux bash scripting

77
推荐指数
2
解决办法
7万
查看次数

Avro架构进化如何运作?

我是Hadoop和编程新手,我对Avro架构演变有点困惑.到目前为止,我将解释我对Avro的理解.

Avro是一个序列化工具,它将顶层的json模式存储为二进制数据.架构看起来像这样.

{
    "namespace":"com.trese.db.model",
    "type":"record",
    "doc":"This Schema describes about Product",
    "name":"Product",
    "fields":[
        {"name":"product_id","type": "long"},
       {"name":"product_name","type": "string","doc":"This is the name of the product"},
      {"name":"cost","type": "float", "aliases":["price"]},
      {"name":"discount","type": "float", "default":5}
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是为什么我们需要进化?我已经读过,我们可以default在架构中使用新字段; 但是如果我们在文件中添加新模式,那么早期的模式将被覆盖.我们不能为单个文件提供两个模式.

另一个问题是,什么是读写器模式以及它们如何帮助?

hadoop avro

12
推荐指数
1
解决办法
9409
查看次数

错误:类型不匹配flatMap

我是新手来编程和scala,我无法理解map和flatMap之间的区别.我尝试下面的代码,因为我期望两者都工作,但有错误.

scala> val b = List("1","2", "4", "5")
b: List[String] = List(1, 2, 4, 5)

scala> b.map(x => (x,1))
res2: List[(String, Int)] = List((1,1), (2,1), (4,1), (5,1))

scala> b.flatMap(x => (x,1))
<console>:28: error: type mismatch;
 found   : (String, Int)
 required: scala.collection.GenTraversableOnce[?]
              b.flatMap(x => (x,1))
Run Code Online (Sandbox Code Playgroud)

根据我的理解,flatmap将Rdd输入到String/Int Rdd的集合中.我想在这种情况下两者都应该没有任何错误.请让我知道我在哪里犯了错误.

谢谢

scala apache-spark

4
推荐指数
1
解决办法
7563
查看次数

如何使用combineByKey?

我试图通过combineByKey获得countByKey的相同结果.

scala> ordersMap.take(5).foreach(println)
(CLOSED,1)
(PENDING_PAYMENT,2)
(COMPLETE,3)
(CLOSED,4)
(COMPLETE,5)
Run Code Online (Sandbox Code Playgroud)

这是我的输入,我想使用combineByKey来获取countByKey的输出.

countByKey的输出(正确)

PAYMENT_REVIEW 729
CLOSED 7556
SUSPECTED_FRAUD 1558
PROCESSING 8275
COMPLETE 22899
PENDING 7610
PENDING_PAYMENT 15030
ON_HOLD 3798
CANCELED 1428
Run Code Online (Sandbox Code Playgroud)

我用过combineByKey

val combine = ordersMap.combineByKey(  x => 1 , (a:Int ,v) => a +1 , (a : Int,v : Int) => a +1  )
Run Code Online (Sandbox Code Playgroud)

但我得到了意想不到的结果,我不知道为什么.

来自combineByKey的结果

(PENDING_PAYMENT,7600)
(CLOSED,3878)
(CANCELED,699)
(PAYMENT_REVIEW,368)
(PENDING,3764)
(ON_HOLD,1896)
(PROCESSING,4100)
(SUSPECTED_FRAUD,773)
(COMPLETE,11372)
Run Code Online (Sandbox Code Playgroud)

谢谢

scala apache-spark

3
推荐指数
1
解决办法
974
查看次数

如何实现 avro 别名

我是 avro 的新手,在尝试使用 avro 别名属性时,我遇到了以下错误。

询问 : select department_id , office_name from test.depart_alias;

SemanticException [错误 10004]:第 1:23 行无效的表别名或列引用“office_name”:(可能的列名称为:department_id、department_name)

我的 avsc 格式的 json 文件是

{
  "type" : "record",
  "name" : "departments",
  "doc" : "Sqoop import of departments",
  "fields" : [ {
    "name" : "department_id",
    "type" : [ "null", "int" ],
    "default" : null,
    "columnName" : "department_id",
    "sqlType" : "4"
  }, {
    "name" : "department_name",
    "type" : [ "null", "string" ],
    "default" : null,
    "aliases" : [ "office_name" ],
    "columnName" : "department_name", …
Run Code Online (Sandbox Code Playgroud)

hive avro

3
推荐指数
1
解决办法
6401
查看次数

AWS Glue python shell 作业可以调用 AWS 胶水火花作业

我是 AWS GLUE 的新手,只想解决一个特定的问题。目前我只有 Glue 服务可用,没有 EC2 节点没有 lambda。我正在尝试从 Aws python shell 胶水作业运行 AWS 火花胶水作业。是否可以将 AWS 胶水 python shell 作业作为包装器运行,并使用不同的参数多次调用同一个 AWS 胶水火花作业。我尝试运行以下代码 snipet,但在日志中出现 boto Ecxeption 错误。

import boto3
glue = boto3.client(service_name='glue', region_name='us-east-1',
              endpoint_url='https://glue.us-east-1.amazonaws.com')  
myNewJobRun = glue.start_job_run(JobName='WHICH I CREATED IN CONSOLE')
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我已经在控制台中创建了一个作业,并希望从 AWS python shell 胶水作业中找到该作业。

下面我想获取作业的状态,如果它正在运行,那么它会等待一段时间,然后再次检查状态。

status = glue.get_job_run(JobName=myJob['Name'], RunId=JobRun['JobRunId'])
Run Code Online (Sandbox Code Playgroud)

有人可以建议分享任何代码示例以供参考

谢谢普拉迪普

python amazon-web-services aws-glue

3
推荐指数
1
解决办法
4285
查看次数