Find Data in DynamoDB in Spark
I get a small task recently, in our DynamoDB, there is one column in one table, at first we put bad data in table saying extension as Number, later we know it should be String.
But that end up we have some Number and some String in the same column. We need to find out all the Number ones and update them to String.
Here is my steps.
First of all I do a scan
> aws dynamodb scan --table-name sillycat_device-stage-devicePairingInfo --query "Items
.[extension.N]" --output text > ./extensionnumber.csv
In the file extension number.csv, I will have data similar to
extension
None
None
None
None
None
None
243074
I need filter out all the None ones, then I get the Number ones.
Then I dump the whole table
> export-dynamodb -t sillycat_device-stage-devicePairingInfo -f csv -o devicepairinginfodb.csv
Put these 2 tables in Spark, do a join and select, I found out all the ones with Number.
In Spark, we can directly read DynamoDB if they do not have this kind of Number/String conflicts.
import com.github.traviscrawford.spark.dynamodb._
%spark.dep
z.load("mysql:mysql-connector-java:5.1.47")
z.load("com.github.traviscrawford:spark-dynamodb:0.0.13”)
val accountDF = sqlContext.read.dynamodb("us-west-1", “sillycat_device-stage-devicePairingInfo")
accountDF.printSchema()
accountDF.registerTempTable("devicepairing")
Or load the CSV file
val devicePairingDF = sqlContext.read.format("csv")
.option("header", "true")
.option("inferSchema", "true")
.load("hdfs://localhost:9000/convertdevicepairingextension/devicepairinginfodb.csv")
devicePairingDF.printSchema()
devicePairingDF.createOrReplaceTempView("devicepairing2")
Load the second Number file
val extensionRawDF = sqlContext.read.format("csv")
.option("header", "true")
.option("inferSchema", "true")
.load("hdfs://localhost:9000/convertdevicepairingextension/extensionnumber2.csv")
val extensionRaw1DF = extensionRawDF.toDF(extensionRawDF.columns map(_.toLowerCase): _*)
val extensionDF = extensionRaw1DF.columns.foldLeft(extensionRaw1DF)((curr, n) => curr.withColumnRenamed(n, n.replaceAll("\\s", "_")))
extensionDF.printSchema()
extensionDF.createOrReplaceTempView("extension”)
Join the 2 tables
%sql
select t1.* from devicepairing2 t1, extension t2 where t1.extension = t2.extension
Output the JSON file
val extensionUpdateDF = sqlContext.sql("""
select t1.* from devicepairing2 t1, extension t2 where t1.extension = t2.extension
""")
extensionUpdateDF.show(2)
extensionUpdateDF.repartition(1).write.json("hdfs://localhost:9000/convertdevicepairingextension/extension_to_update")
References:
分享到:
相关推荐
弹簧数据动力学模型使用Spring-Data-Rest的Amazon DynamoDB Spring-Data存储库演示开始按照Amazon示例教程中的描述创建并填充Amazon DynamoDB“论坛”,“线程”和“回复”表: 使用您的DynamoDB终端节点和AWS凭证...
Spring Data DynamoDB 项目的主要目标是使构建使用数据访问技术的Spring支持的应用程序更加容易。 该模块处理对基于构建的数据访问层的增强支持。 技术信息可以在上找到。 支持的功能 DynamoDB实体的 根据动态...
Spark + DynamoDB 适用于AWS DynamoDB的Apache Spark自定义数据源的即插即用实现。 我们发布了有关该项目的小文章,请在此处查看: : 消息 2021-01-28:添加了选项inferSchema=false ,该选项在写入具有许多列的...
Spark-DynamoDB是Apache Spark与Amazon DynamoDB之间的一个数据源接口实现,允许用户直接在Spark应用程序中读写DynamoDB表。这个项目尚处于工作进行中(WIP),意味着它可能还在开发和完善阶段,可能存在一些功能...
Spring Data DynamoDB 简化了创建一个基于 Amazon DynamoDB 的 Java 数据访问层的开发。支持特性:DynamoDB 实体的 CRUD 方法的的实现动态查询生成的查询方法名 可以集成可定制仓库代码简单的基于 Spring 标准的集成...
在本项目中,"migrate-data-dynamodb-streams-lambda" 是一个利用Amazon DynamoDB的流(Streams)功能和AWS Lambda服务来迁移或处理预先存在的数据的解决方案。DynamoDB是亚马逊提供的一种高性能、完全托管的NoSQL...
在本文中,我们将深入探讨如何在Laravel框架中利用DynamoDB进行开发,基于提供的标题“Laravel开发-dynamodb”和描述中提到的资源“laravel-dynamodb”库。DynamoDB是Amazon Web Services(AWS)提供的一款无服务器...
DynamoDB是亚马逊提供的完全托管的NoSQL数据库服务,允许用户无需管理服务器即可存储和检索任意量的数据。DynamoDB支持多种数据类型,包括标量值、文档和集合类型。它能够为数据提供快速的访问速度,并且能够自动...
dynamodb-document-js-sdk 抽离出低端 SDK 属性值的类型,以提供更简单的开发经验。JS 数据类型,如 string 和 number 可以直接传送到 DynamoDB 需求中;同样,数据类型不会被打包。示例代码:// Basic Client ...
DynamoDB官方文档,入门文档。学习dynamoDB的工具,开发人员指南,API。 Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,提供快速且可预测的性能,同时还能够实现无缝扩展。使用 DynamoDB,您可以免除操作和...
DynamoDBLocal-1.11.86.jar
DynamoDB Cookbook by Tanmay Deshpande, Over 90 hands-on recipes to design Internet scalable web and mobile applications with Amazon DynamoDB
Begin Data是建立在DynamoDB之上的易于使用,快速且持久的键/值和文档存储。 Begin Data最初是为构建的,其核心API具有三种简单的方法: get , set和destroy 。 概念 Begin Data将自身组织到table s中。 一个table...
在本文中,我们将深入探讨如何在Laravel框架中使用DynamoDB作为会话驱动程序,以便在AWS(亚马逊网络服务)环境中实现高效、可扩展的会话管理。Laravel是PHP的一个流行开源Web应用程序框架,它提供了丰富的功能来...
DynamoDB是亚马逊网络服务(Amazon Web Services, AWS)提供的一个完全托管的NoSQL数据库服务, 它提供了快速且灵活的性能,能够存储和检索任何规模的数据。DynamoDB支持文档和键值对数据结构,适合需要高性能、灵活...
node-dynamodb, node.js的DynamoDb驱动程序 基本node.js的简单,高效和完整的DynamoDB驱动程序,带有:NodeJS中处理dynamodb格式Amazon格式的语法 sweeteners/映射有效和透明的身份验证和认证刷新使用与 amazon PhP...
《Go-dynago:Go语言中的DynamoDB客户端详解》 在现代的云原生应用开发中,Amazon DynamoDB作为一款高性能、完全托管的NoSQL数据库服务,被广泛应用于存储和检索大规模数据。针对Go语言的开发者,亚马逊AWS提供了一...
dynamodb-lambda-autoscale, 使用Lambda实现自动缩放 DynamoDB dynamodb-lambda-autoscale使用 AWS Lambda函数 自动缩放 AWS DynamoDB5 分钟设置过程无服务器设计通过配置样式实现灵活的代码自动缩放表和全局二级...
Amazon DynamoDB 是一个键/值和文档数据库,可以在任何规模的环境中提供个位数的毫秒级性能。它是一个完全托管、多区域多主的持久数据库,具有适用于 Internet 规模的应用程序的内置安全性、备份和恢复和内存缓存。...
Laravel开发-laravel-dynamodb-eloquent-syntax 来自https://github.com/baopham/laravel-dynamodb的dynamodb的自定义雄辩语法