Skip to content

Scio 解释器

原文链接 : http://zeppelin.apache.org/docs/0.7.2/interpreter/scio.html

译文链接 : https://www.apachecn.org/pages/viewpage.action?pageId=10030912

贡献者 : 片刻 ApacheCN Apache中文网

概述

Scio是Google云数据流的Scala DSL 和由SparkScalding启发的Apache Beam。有关更多信息,请参阅当前的wikiAPI文档。

配置

名称 默认值 描述
zeppelin.scio.argz --runner = InProcessPipelineRunner Scio解释者广泛的论据。文档:https://github.com/spotify/scio/wiki#optionshttps://cloud.google.com/dataflow/pipelines/specifying-exec-params
zeppelin.scio.maxResult 1000 要显示的最大SC选择结果数

启用Scio解释器

在笔记本中,要启用Scio解释器,请单击Gear图标并选择beambeam.scio)。

使用Scio解释器

在段落中,用于%beam.scio选择Scio解释器。您可以使用与香草Scala REPL和Scio REPL相同的方式。状态(如变量,导入,执行等)在所有_Scio_段落之间共享。有一个特殊的变量argz,它包含来自Scio解释器设置的参数。最简单的方法是通过标准创建Scio上下文ContextAndArgs

%beam.scio
val (sc, args) = ContextAndArgs(argz) 

sc以常规管道/ REPL的方式使用上下文。

示例:

%beam.scio
val (sc, args) = ContextAndArgs(argz)
sc.parallelize(Seq("foo", "foo", "bar")).countByValue.closeAndDisplay() 

如果您关闭Scio上下文,请继续创建一个新的ContextAndArgs。请参考Scio wiki更复杂的例子。您可以关闭Scio上下文与Scio REPL相同,并使用Zeppelin显示帮助程序同步关闭并显示结果 - 在下面阅读更多。

进展

一次只能运行一个段落。没有总体进展的概念,因此进度条将显示0

SCollection显示助手

Scio解释器带有显示助手,以方便与Zeppelin笔记本电脑的工作。只需使用closeAndDisplay()SCollection,关闭背景和显示结果。结果数量受限于zeppelin.scio.maxResult(默认为1000)。

支持的SCollection类型:

  • Scio键入的BigQuery
  • Scala的产品(案例 classes, tuples)
  • Google BigQuery的TableRow
  • Apache Avro
  • 所有Scala的 AnyVal

助手方法

不同的对象有不同的帮助方法。您可以轻松地显示结果SCollectionFuture[Tap]Tap

SCollection 帮手

SCollection closeAndDisplay对于上面列出的类型,具有Zeppelin辅助方法。使用它来同步关闭Scio上下文,一旦可用的拉和显示结果。

Future[Tap] 帮手

Future[Tap] waitAndDisplay对于上面列出的类型,具有Zeppelin辅助方法。使用它来同步等待结果,一旦可用拉和显示结果。

Tap 帮手

Tap display对于上面列出的类型,具有Zeppelin辅助方法。使用它来拉和显示结果。

示例

BigQuery示例:

%beam.scio
@BigQueryType.fromQuery("""|SELECT departure_airport,count(case when departure_delay>0 then 1 else 0 end) as no_of_delays
 |FROM [bigquery-samples:airline_ontime_data.flights]
 |group by departure_airport
 |order by 2 desc
 |limit 10""".stripMargin) class Flights 

val (sc, args) = ContextAndArgs(argz)
sc.bigQuerySelect(Flights.query).closeAndDisplay(Flights.schema) 

BigQuery typed 示例:

%beam.scio
@BigQueryType.fromQuery("""|SELECT departure_airport,count(case when departure_delay>0 then 1 else 0 end) as no_of_delays
 |FROM [bigquery-samples:airline_ontime_data.flights]
 |group by departure_airport
 |order by 2 desc
 |limit 10""".stripMargin) class Flights 

val (sc, args) = ContextAndArgs(argz)
sc.typedBigQuery[Flights]().flatMap(_.no_of_delays).mean.closeAndDisplay() 

Avro示例:

%beam.scio
import com.spotify.data.ExampleAvro 

val (sc, args) = ContextAndArgs(argz)
sc.avroFile[ExampleAvro]("gs://<bucket>/tmp/my.avro").take(10).closeAndDisplay() 

具有视图模式的Avro示例:

%beam.scio
import com.spotify.data.ExampleAvro
import org.apache.avro.Schema 

val (sc, args) = ContextAndArgs(argz)
val view = Schema.parse("""{"type":"record","name":"ExampleAvro","namespace":"com.spotify.data","fields":[{"name":"track","type":"string"}, {"name":"artist", "type":"string"}]}""") 

sc.avroFile[EndSongCleaned]("gs://<bucket>/tmp/my.avro").take(10).closeAndDisplay(view) 

Google凭据

Scio Interpreter会尝试从其环境推断出您的Google Cloud凭据,它将进入帐户:

  • argz解释器设置(doc
  • 环境变量(GOOGLE_APPLICATION_CREDENTIALS
  • gcloud配置

BigQuery宏凭证

目前用于宏扩展的BigQuery项目是使用Google Dataflow的DefaultProjectFactory().create() 推断的。



回到顶部