├── Slides - PySpark For AWS Glue.pdf ├── employees └── employees.csv ├── create-tutorial-resources-cloud-formation.yaml ├── readme.md └── customers └── customers.csv /Slides - PySpark For AWS Glue.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnny-chivers/pyspark-glue-tutorial/HEAD/Slides - PySpark For AWS Glue.pdf -------------------------------------------------------------------------------- /employees/employees.csv: -------------------------------------------------------------------------------- 1 | 274,NULL,Stephen,Jiang,Stephen Jiang,North American Sales Manager,2,M,M,NULL,NULL,NULL 2 | 275,274,Michael,Blythe,Michael Blythe,Sales Representative,3,S,M,Northeast,US,North America 3 | 276,274,Linda,Mitchell,Linda Mitchell,Sales Representative,3,M,F,Southwest,US,North America 4 | 277,274,Jillian,Carson,Jillian Carson,Sales Representative,3,S,F,Central,US,North America 5 | 278,274,Garrett,Vargas,Garrett Vargas,Sales Representative,3,M,M,Canada,CA,North America 6 | 279,274,Tsvi,Reiter,Tsvi Reiter,Sales Representative,3,M,M,Southeast,US,North America 7 | 280,274,Pamela,Ansman-Wolfe,Pamela Ansman-Wolfe,Sales Representative,3,S,F,Northwest,US,North America 8 | 281,274,Shu,Ito,Shu Ito,Sales Representative,3,M,M,Southwest,US,North America 9 | 282,274,Josh,Saraiva,Josh Saraiva,Sales Representative,3,M,M,Canada,CA,North America 10 | 283,274,David,Campbell,David Campbell,Sales Representative,3,S,M,Northwest,US,North America 11 | 284,274,Tete,Mensa-Annan,Tete Mensa-Annan,Sales Representative,3,M,M,Northwest,US,North America 12 | 285,NULL,Syed,Abbas,Syed Abbas,Pacific Sales Manager,2,M,M,NULL,NULL,NULL 13 | 286,285,Lynn,Tsoflias,Lynn Tsoflias,Sales Representative,3,S,F,Australia,AU,Pacific 14 | 287,NULL,Amy,Alberts,Amy Alberts,European Sales Manager,2,M,F,NULL,NULL,NULL 15 | 288,287,Rachel,Valdez,Rachel Valdez,Sales Representative,3,S,F,Germany,DE,Europe 16 | 289,287,Jae,Pak,Jae Pak,Sales Representative,3,M,F,United Kingdom,GB,Europe 17 | 290,287,Ranjit,Varkey Chudukatil,Ranjit Varkey Chudukatil,Sales Representative,3,S,M,France,FR,Europe 18 | -------------------------------------------------------------------------------- /create-tutorial-resources-cloud-formation.yaml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: "2010-09-09" 2 | Description: AWS CloudFormation which creates the resources for the aws pyspark for glue tutorial 3 | ### 4 | # Parameters for the cloudformation template 5 | Parameters: 6 | S3PySparkBucketName: 7 | Type: String 8 | Description: Bucket name for the aws tutorial 9 | PreFixForGlueNotebookRoleAndPolicy: 10 | Type: String 11 | Description: Prefix for glue policy and role 12 | Resources: 13 | S3BucketForData: 14 | Type: AWS::S3::Bucket 15 | Properties: 16 | BucketName: !Ref S3PySparkBucketName 17 | Tags: 18 | - Key: identifier 19 | Value: pySparktutorial 20 | ### 21 | # Database created for the tables to reside in 22 | GlueDatabase: 23 | Type: AWS::Glue::Database 24 | Properties: 25 | CatalogId: !Ref AWS::AccountId 26 | DatabaseInput: 27 | Name: pyspark_tutorial_db 28 | Description: "This database contains the tables for the PySpark tutorial" 29 | ### 30 | # Create the customer table which depends on the GlueDatabase and S3 bucket 31 | GlueCustomerTable: 32 | DependsOn: 33 | - GlueDatabase 34 | - S3BucketForData 35 | Type: AWS::Glue::Table 36 | Properties: 37 | CatalogId: !Ref AWS::AccountId 38 | DatabaseName: pyspark_tutorial_db 39 | TableInput: 40 | Name: customers 41 | Description: Table for customer data 42 | TableType: EXTERNAL_TABLE 43 | StorageDescriptor: 44 | Columns: 45 | - Name: customerid 46 | Type: bigint 47 | - Name: firstname 48 | Type: string 49 | - Name: lastname 50 | Type: string 51 | - Name: fullname 52 | Type: string 53 | Location: !Sub s3://${S3PySparkBucketName}/customers 54 | InputFormat: org.apache.hadoop.mapred.TextInputFormat 55 | OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 56 | SerdeInfo: 57 | Parameters: 58 | field.delim: "," 59 | SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe 60 | ### 61 | # Create the customers_write table which depends on the GlueDatabase and S3 bucket 62 | GlueCustomerWriteDyfTable: 63 | DependsOn: 64 | - GlueDatabase 65 | - S3BucketForData 66 | Type: AWS::Glue::Table 67 | Properties: 68 | CatalogId: !Ref AWS::AccountId 69 | DatabaseName: pyspark_tutorial_db 70 | TableInput: 71 | Name: customers_write_dyf 72 | Description: Table for customer data which has been wrote from a Glue Dynamic Dataframe 73 | TableType: EXTERNAL_TABLE 74 | StorageDescriptor: 75 | Columns: 76 | - Name: customerid 77 | Type: bigint 78 | - Name: firstname 79 | Type: string 80 | - Name: lastname 81 | Type: string 82 | - Name: fullname 83 | Type: string 84 | Location: !Sub s3://${S3PySparkBucketName}/customers_write_dyf 85 | InputFormat: org.apache.hadoop.mapred.TextInputFormat 86 | OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 87 | SerdeInfo: 88 | Parameters: 89 | field.delim: "," 90 | SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe 91 | ### 92 | # Create the employees table which depends on the GlueDatabase and S3 bucket 93 | GlueEmployeesTable: 94 | DependsOn: 95 | - GlueDatabase 96 | - S3BucketForData 97 | Type: AWS::Glue::Table 98 | Properties: 99 | CatalogId: !Ref AWS::AccountId 100 | DatabaseName: pyspark_tutorial_db 101 | TableInput: 102 | Name: employees 103 | Description: Table for employees data 104 | TableType: EXTERNAL_TABLE 105 | StorageDescriptor: 106 | Columns: 107 | - Name: employeeid 108 | Type: bigint 109 | - Name: managerid 110 | Type: bigint 111 | - Name: firstname 112 | Type: string 113 | - Name: lastname 114 | Type: string 115 | - Name: fullname 116 | Type: string 117 | - Name: jobtitle 118 | Type: string 119 | - Name: organizationlevel 120 | Type: int 121 | - Name: maritalstatus 122 | Type: string 123 | - Name: gender 124 | Type: string 125 | - Name: territory 126 | Type: string 127 | - Name: country 128 | Type: string 129 | - Name: group 130 | Type: string 131 | Location: !Sub s3://${S3PySparkBucketName}/employees 132 | InputFormat: org.apache.hadoop.mapred.TextInputFormat 133 | OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 134 | SerdeInfo: 135 | Parameters: 136 | field.delim: "," 137 | SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe 138 | ### 139 | # Create the orders table which depends on the GlueDatabase and S3 bucket 140 | GlueOrdersTable: 141 | DependsOn: 142 | - GlueDatabase 143 | - S3BucketForData 144 | Type: AWS::Glue::Table 145 | Properties: 146 | CatalogId: !Ref AWS::AccountId 147 | DatabaseName: pyspark_tutorial_db 148 | TableInput: 149 | Name: orders 150 | Description: Table for employees data 151 | TableType: EXTERNAL_TABLE 152 | StorageDescriptor: 153 | Columns: 154 | - Name: salesorderid 155 | Type: bigint 156 | - Name: salesorderdetailid 157 | Type: int 158 | - Name: orderdate 159 | Type: string 160 | - Name: duedate 161 | Type: string 162 | - Name: shipdate 163 | Type: string 164 | - Name: employeeid 165 | Type: bigint 166 | - Name: customerid 167 | Type: bigint 168 | - Name: subtotal 169 | Type: decimal(17,4) 170 | - Name: taxamt 171 | Type: decimal(17,4) 172 | - Name: freight 173 | Type: decimal(17,4) 174 | - Name: totaldue 175 | Type: decimal(17,4) 176 | - Name: productid 177 | Type: int 178 | - Name: orderqty 179 | Type: int 180 | - Name: unitprice 181 | Type: decimal(17,4) 182 | - Name: unitpricediscount 183 | Type: decimal(17,4) 184 | - Name: linetotal 185 | Type: decimal(17,4) 186 | Location: !Sub s3://${S3PySparkBucketName}/orders 187 | InputFormat: org.apache.hadoop.mapred.TextInputFormat 188 | OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 189 | SerdeInfo: 190 | Parameters: 191 | field.delim: "," 192 | SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe 193 | ### 194 | # Create Role for Glue Notebook and interactive sessions NB this allows access to all glue resources and S3 195 | GlueNotebookRole: 196 | Type: AWS::IAM::Role 197 | Properties: 198 | AssumeRolePolicyDocument: 199 | Version: "2012-10-17" 200 | Statement: 201 | - Effect: Allow 202 | Principal: 203 | Service: 204 | - glue.amazonaws.com 205 | Action: 206 | - 'sts:AssumeRole' 207 | Description: Role for Glue Notebook PySpark tutorial. 208 | MaxSessionDuration: 43200 209 | Policies: 210 | - PolicyName: !Sub ${PreFixForGlueNotebookRoleAndPolicy}Policy 211 | PolicyDocument: 212 | Version: "2012-10-17" 213 | Statement: 214 | - Effect: Allow 215 | Action: 216 | - "glue:*" 217 | - "s3:*" 218 | - "ec2:DescribeVpcEndpoints" 219 | - "ec2:DescribeRouteTables" 220 | - "ec2:CreateNetworkInterface" 221 | - "ec2:DeleteNetworkInterface" 222 | - "ec2:DescribeNetworkInterfaces" 223 | - "ec2:DescribeSecurityGroups" 224 | - "ec2:DescribeSubnets" 225 | - "ec2:DescribeVpcAttribute" 226 | - "iam:ListRolePolicies" 227 | - "iam:GetRole" 228 | - "iam:GetRolePolicy" 229 | - "cloudwatch:PutMetricData" 230 | - "ec2:CreateTags" 231 | - "ec2:DeleteTags" 232 | - "logs:CreateLogGroup" 233 | - "logs:CreateLogStream" 234 | - "logs:PutLogEvents" 235 | Resource: "*" 236 | - Effect: Allow 237 | Action: 238 | - "s3:*" 239 | Resource: 240 | - "arn:aws:s3:::{S3PySparkBucketName}/*" 241 | - "arn:aws:s3:::{S3PySparkBucketName}/" 242 | - Effect: Allow 243 | Action: 244 | - "iam:GetRole" 245 | - "iam:PassRole" 246 | Resource: !Sub arn:aws:iam::${AWS::AccountId}:role/${PreFixForGlueNotebookRoleAndPolicy}Role 247 | RoleName: !Sub ${PreFixForGlueNotebookRoleAndPolicy}Role -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # PySpark For AWS Glue 2 | 3 | ## Table of contents 4 | 5 | - [What's included](#whats-included) 6 | - [Overview](#Overview) 7 | - [Data](#data) 8 | - [Main Tutorial](#main-tutorial) 9 | - [Useful Links](#useful-links) 10 | - [Creators](#creators) 11 | 12 | ## What's included 13 | 14 | The repo is to supplement the [youtube video](https://youtu.be/DICsZiwuHJo) on PySpark for Glue. It includes a cloudformation template which creates the s3 bucket, glue tables, IAM roles, and csv data files. 15 | 16 | ## Overview 17 | 1. Spin up resources using cloudformation template 18 | 2. Add csv files to S3 bucket in relative folder location 19 | 3. Create Glue notebook 20 | 4. Execute PySpark code 21 | 22 | ## Data 23 | Below are the schemas for the tables created in the Glue Data Catalog by the cloudformation template. They also include a small sample of data to aid the explanation of the coding syntax. 24 | 25 | **Customers** 26 | | Customerid | Firstname | Lastname| Fullname | 27 | | ----------- | ----------- |-----------|-----------| 28 | | 293 | Catherine | Abel | Catherine Abel | 29 | | 295 | Kim | Abercrombie | Kim Abercrombie | 30 | | 297 | Humberto | Acevedo | Humberto Acevedo | 31 | 32 | **Orders** 33 | 34 | | SalesOrderID | SalesOrderDetailID | OrderDate | DueDate | ShipDate | EmployeeID | CustomerID | SubTotal | TaxAmt | Freight | TotalDue | ProductID | OrderQty | UnitPrice | UnitPriceDiscount | LineTotal | 35 | |---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------| 36 | | 71782 | 110667 | 5/1/2014 | 5/13/2014 | 5/8/2014 | 276 | 293 | 33319.986 | 3182.8264 | 994.6333 | 37497.4457 | 714 | 3 | 29.994 | 0 | 89.982 | 37 | | 44110 | 1732 | 8/1/2011 | 8/13/2011 | 8/8/2011 | 277 | 295 | 16667.3077 | 1600.6864 | 500.2145 | 18768.2086 | 765 | 2 | 419.4589 | 0 | 838.9178 | 38 | | 44131 | 2005 | 8/1/2011 | 8/13/2011 | 8/8/2011 | 275 | 297 | 20514.2859 | 1966.5222 | 614.5382 | 23095.3463 | 709 | 6 | 5.7 | 0 | 34.2 | 39 | 40 | **Employees** 41 | 42 | | EmployeeID | ManagerID | FirstName | LastName | FullName | JobTitle | OrganizationLevel | MaritalStatus | Gender | Territory | Country | Group | 43 | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------| 44 | | 276 | 274 | Linda | Mitchell | Linda Mitchell | Sales Representative | 3 | M | F | Southwest | US | North America | 45 | | 277 | 274 | Jillian | Carson | Jillian Carson | Sales Representative | 3 | S | F | Central | US | North America | 46 | | 275 | 274 | Michael | Blythe | Michael Blythe | Sales Representative | 3 | S | M | Northeast | US | North America | 47 | 48 | ## Main Tutorial 49 | 1. Create Resources using supplied cloud formation template [see video](https://youtu.be/DICsZiwuHJo?t=54) 50 | 2. Upload csv folder/files to S3 bucket [see video](https://youtu.be/DICsZiwuHJo?t=330) 51 | 3. Create Glue Notebook [see videox](https://youtu.be/DICsZiwuHJo?t=402) 52 | 5. Read data from Customers Table using Notebook Using Dynamic Frame 53 | ``` 54 | # Read from the customers table in the glue data catalog using a dynamic frame 55 | dynamicFrameCustomers = glueContext.create_dynamic_frame.from_catalog( 56 | database = "pyspark_tutorial_db", 57 | table_name = "customers" 58 | ) 59 | 60 | # Show the top 10 rows from the dynamic dataframe 61 | dynamicFrameCustomers.show(10) 62 | ``` 63 | 64 | 7. Check data types in Dynamic Frame 65 | ``` 66 | # Check types in dynamic frame 67 | dynamicFrameCustomers.printSchema() 68 | ``` 69 | 70 | 8. Count The Number of Rows in a Dynamic DataFrame 71 | ``` 72 | # Count The Number of Rows in a Dynamic Dataframe 73 | dynamicFrameCustomers.count() 74 | ``` 75 | 76 | 9. Select Fields From A Dynamic frame 77 | ``` 78 | # Selecting certain fields from a Dynamic DataFrame 79 | dyfCustomerSelectFields = dynamicFrameCustomers.select_fields(["customerid", "fullname"]) 80 | 81 | # Show top 10 82 | dyfCustomerSelectFields.show(10) 83 | ``` 84 | 85 | 10. Drop Columns in a Dynamic Frame 86 | ``` 87 | #Drop Fields of Dynamic Frame 88 | dyfCustomerDropFields = dynamicFrameCustomers.drop_fields(["firstname","lastname"]) 89 | 90 | # Show Top 10 rows of dyfCustomerDropFields Dynamic Frame 91 | dyfCustomerDropFields.show(10) 92 | ``` 93 | 11. Rename Columns in a Dynamic Frame 94 | ``` 95 | # Mapping array for column rename fullname -> name 96 | mapping=[("customerid", "long", "customerid","long"),("fullname", "string", "name", "string")] 97 | 98 | # Apply the mapping to rename fullname -> name 99 | dfyMapping = ApplyMapping.apply( 100 | frame = dyfCustomerDropFields, 101 | mappings = mapping, 102 | transformation_ctx = "applymapping1" 103 | ) 104 | 105 | # show the new dynamic frame with name column 106 | dfyMapping.show(10) 107 | ``` 108 | 109 | 12. Filter data in a Dynamic Frame 110 | ``` 111 | # Filter dynamicFrameCustomers for customers who have the last name Adams 112 | dyfFilter= Filter.apply(frame = dynamicFrameCustomers, 113 | f = lambda x: x["lastname"] in "Adams" 114 | ) 115 | 116 | # Show the top 10 customers from the filtered Dynamic frame 117 | dyfFilter.show(10) 118 | ``` 119 | 120 | 13. Join Two Dynamic frames on a equality join 121 | - read up orders dynamic frame 122 | ``` 123 | # Read from the customers table in the glue data catalog using a dynamic frame 124 | dynamicFrameOrders = glueContext.create_dynamic_frame.from_catalog( 125 | database = "pyspark_tutorial_db", 126 | table_name = "orders" 127 | ) 128 | 129 | # show top 10 rows of orders table 130 | dynamicFrameOrders.show(10) 131 | ``` 132 | - join customers and orders dynamic frame 133 | ``` 134 | # Join two dynamic frames on an equality join 135 | dyfjoin = dynamicFrameCustomers.join(["customerid"],["customerid"],dynamicFrameOrders) 136 | 137 | # show top 10 rows for the joined dynamic 138 | dyfjoin.show(10) 139 | ``` 140 | 141 | 14. Write Down Data from a Dynamic Frame To S3 142 | - Create a folder in the S3 bucket created by Cloudformation to use as a location to write the data down to `write_down_dyf_to_s3` 143 | - Write down data to S3 using the dynamic DataFrame writer class for an S3 path. 144 | ``` 145 | # write down the data in a Dynamic Frame to S3 location. 146 | glueContext.write_dynamic_frame.from_options( 147 | frame = dynamicFrameCustomers, 148 | connection_type="s3", 149 | connection_options = {"path": "s3:///write_down_dyf_to_s3"}, 150 | format = "csv", 151 | format_options={ 152 | "separator": "," 153 | }, 154 | transformation_ctx = "datasink2") 155 | ``` 156 | 157 | 15. Write Down Data from a Dynamic Frame using Glue Data Catalog 158 | ``` 159 | # write data from the dynamicFrameCustomers to customers_write_dyf table using the meta data stored in the glue data catalog 160 | glueContext.write_dynamic_frame.from_catalog( 161 | frame=dynamicFrameCustomers, 162 | database = "pyspark_tutorial_db", 163 | table_name = "customers_write_dyf" 164 | ) 165 | ``` 166 | 167 | 16. Convert from Dynamic Frame To Spark DataFrame 168 | ``` 169 | # Dynamic Frame to Spark DataFrame 170 | sparkDf = dynamicFrameCustomers.toDF() 171 | 172 | #show spark DF 173 | sparkDf.show() 174 | ``` 175 | 176 | 17. Selecting Columns In a Spark DataFrame 177 | ``` 178 | # Select columns from spark dataframe 179 | dfSelect = sparkDf.select("customerid","fullname") 180 | 181 | # show selected 182 | dfSelect.show() 183 | ``` 184 | 185 | 18. Add Columns In A Spark Dataframe 186 | - creating a new column with a literal string 187 | ``` 188 | #import lit from sql functions 189 | from pyspark.sql.functions import lit 190 | 191 | # Add new column to spark dataframe 192 | dfNewColumn = sparkDf.withColumn("date", lit("2022-07-24")) 193 | 194 | # show df with new column 195 | dfNewColumn.show() 196 | ``` 197 | - Using concat to concatenate two columns together 198 | ``` 199 | #import concat from functions 200 | from pyspark.sql.functions import concat 201 | 202 | # create another full name column 203 | dfNewFullName = sparkDf.withColumn("new_full_name",concat("firstname",concat(lit(' '),"lastname"))) 204 | 205 | #show full name column 206 | dfNewFullName.show() 207 | ``` 208 | 19. Dropping Columns 209 | ``` 210 | # Drop column from spark dataframe 211 | dfDropCol = sparkDf.drop("firstname","lastname") 212 | 213 | #show dropped column df 214 | dfDropCol.show() 215 | ``` 216 | 20. Renaming columns 217 | ``` 218 | # Rename column in Spark dataframe 219 | dfRenameCol = sparkDf.withColumnRenamed("fullname","full_name") 220 | 221 | #show renamed column dataframe 222 | dfRenameCol.show() 223 | ``` 224 | 21. GroupBy and Aggregate Operations 225 | ``` 226 | # Group by lastname then print counts of lastname and show 227 | sparkDf.groupBy("lastname").count().show() 228 | ``` 229 | 22. Filtering Columns and Where clauses 230 | - Filter the spark dataframe 231 | ``` 232 | # Filter spark DataFrame for customers who have the last name Adams 233 | sparkDf.filter(sparkDf["lastname"] == "Adams").show() 234 | ``` 235 | - Where clause 236 | ``` 237 | # Where clause spark DataFrame for customers who have the last name Adams 238 | sparkDf.where("lastname =='Adams'").show() 239 | ``` 240 | 241 | 23. Joins 242 | - read up orders dataset and convert to spark dataframe 243 | ``` 244 | # Read from the customers table in the glue data catalog using a dynamic frame and convert to spark dataframe 245 | dfOrders = glueContext.create_dynamic_frame.from_catalog( 246 | database = "pyspark_tutorial_db", 247 | table_name = "orders" 248 | ).toDF() 249 | ``` 250 | - Inner join for Spark Dataframe All Data 251 | ``` 252 | # Inner Join Customers Spark DF to Orders Spark DF 253 | sparkDf.join(dfOrders,sparkDf.customerid == dfOrders.customerid,"inner").show(truncate=False) 254 | ``` 255 | - Inner Join Adams only 256 | ``` 257 | #Get customers that only have surname Adams 258 | dfAdams = sparkDf.where("lastname =='Adams'") 259 | 260 | # inner join on Adams DF and orders 261 | dfAdams.join(dfOrders,dfAdams.customerid == dfOrders.customerid,"inner").show() 262 | ``` 263 | - Left Join 264 | ``` 265 | #left join on orders and adams df 266 | dfOrders.join(dfAdams,dfAdams.customerid == dfOrders.customerid,"left").show(100) 267 | ``` 268 | 269 | 24. Writing data down using the Glue Data Catalog 270 | - delete data from S3 in `customers_write_dyf` and `write_down_dyf_to_s3` 271 | - convert from spark Dataframe to Glue Dynamic DataFrame 272 | ``` 273 | # Import Dynamic DataFrame class 274 | from awsglue.dynamicframe import DynamicFrame 275 | 276 | #Convert from Spark Data Frame to Glue Dynamic Frame 277 | dyfCustomersConvert = DynamicFrame.fromDF(sparkDf, glueContext, "convert") 278 | 279 | #Show converted Glue Dynamic Frame 280 | dyfCustomersConvert.show() 281 | ``` 282 | - Write Dynamic DataFrame down to S3 location 283 | ``` 284 | # write down the data in converted Dynamic Frame to S3 location. 285 | glueContext.write_dynamic_frame.from_options( 286 | frame = dyfCustomersConvert, 287 | connection_type="s3", 288 | connection_options = {"path": "s3:///write_down_dyf_to_s3"}, 289 | format = "csv", 290 | format_options={ 291 | "separator": "," 292 | }, 293 | transformation_ctx = "datasink2") 294 | ``` 295 | - Write Dynamic DataFrame using Glue Data Catalog 296 | ``` 297 | # write data from the converted to customers_write_dyf table using the meta data stored in the glue data catalog 298 | glueContext.write_dynamic_frame.from_catalog( 299 | frame = dyfCustomersConvert, 300 | database = "pyspark_tutorial_db", 301 | table_name = "customers_write_dyf") 302 | ``` 303 | 304 | ## Creators 305 | 306 | **Johnny Chivers** 307 | 308 | - 309 | 310 | ## Useful Links 311 | 312 | - [youtube video](https://youtu.be/DICsZiwuHJo) 313 | - [website](https://www.johnnychivers.co.uk) 314 | - [buy me a coffee](https://www.buymeacoffee.com/johnnychivers) 315 | 316 | 317 | Enjoy :metal: 318 | -------------------------------------------------------------------------------- /customers/customers.csv: -------------------------------------------------------------------------------- 1 | 293,Catherine,Abel,Catherine Abel 2 | 295,Kim,Abercrombie,Kim Abercrombie 3 | 297,Humberto,Acevedo,Humberto Acevedo 4 | 291,Gustavo,Achong,Gustavo Achong 5 | 299,Pilar,Ackerman,Pilar Ackerman 6 | 305,Carla,Adams,Carla Adams 7 | 301,Frances,Adams,Frances Adams 8 | 307,Jay,Adams,Jay Adams 9 | 309,Ronald,Adina,Ronald Adina 10 | 311,Samuel,Agcaoili,Samuel Agcaoili 11 | 313,James,Aguilar,James Aguilar 12 | 315,Robert,Ahlering,Robert Ahlering 13 | 319,Kim,Akers,Kim Akers 14 | 441,Stanley,Alan,Stanley Alan 15 | 323,Amy,Alberts,Amy Alberts 16 | 325,Anna,Albright,Anna Albright 17 | 327,Milton,Albury,Milton Albury 18 | 329,Paul,Alcorn,Paul Alcorn 19 | 331,Gregory,Alderson,Gregory Alderson 20 | 333,J. Phillip,Alexander,J. Phillip Alexander 21 | 1149,Mary,Alexander,Mary Alexander 22 | 335,Michelle,Alexander,Michelle Alexander 23 | 341,Marvin,Allen,Marvin Allen 24 | 343,Michael,Allen,Michael Allen 25 | 339,Phyllis,Allen,Phyllis Allen 26 | 345,Cecil,Allison,Cecil Allison 27 | 347,Oscar,Alpuerto,Oscar Alpuerto 28 | 349,Sandra,Altamirano,Sandra Altamirano 29 | 351,Selena,Alvarado,Selena Alvarado 30 | 353,Emilio,Alvaro,Emilio Alvaro 31 | 355,Maxwell,Amland,Maxwell Amland 32 | 357,Mae,Anderson,Mae Anderson 33 | 359,Ramona,Antrim,Ramona Antrim 34 | 361,Sabria,Appelbaum,Sabria Appelbaum 35 | 363,Hannah,Arakawa,Hannah Arakawa 36 | 365,Kyley,Arbelaez,Kyley Arbelaez 37 | 369,Thomas,Armstrong,Thomas Armstrong 38 | 371,John,Arthur,John Arthur 39 | 373,Chris,Ashton,Chris Ashton 40 | 375,Teresa,Atkinson,Teresa Atkinson 41 | 377,John,Ault,John Ault 42 | 379,Robert,Avalos,Robert Avalos 43 | 381,Stephen,Ayers,Stephen Ayers 44 | 383,Phillip,Bacalzo,Phillip Bacalzo 45 | 389,James,Bailey,James Bailey 46 | 391,Douglas,Baldwin,Douglas Baldwin 47 | 393,Jennifer,Bales,Jennifer Bales 48 | 397,Wayne,Banack,Wayne Banack 49 | 405,Robert,Barker,Robert Barker 50 | 407,Rebecca,Barley,Rebecca Barley 51 | 409,Brenda,Barlow,Brenda Barlow 52 | 411,Josh,Barnhill,Josh Barnhill 53 | 413,Adam,Barr,Adam Barr 54 | 419,David,Bartness,David Bartness 55 | 417,Gytis,Barzdukas,Gytis Barzdukas 56 | 421,Karel,Bates,Karel Bates 57 | 427,Shaun,Beasley,Shaun Beasley 58 | 429,John,Beaver,John Beaver 59 | 431,Christopher,Beck,Christopher Beck 60 | 435,Benjamin,Becker,Benjamin Becker 61 | 437,Ann,Beebe,Ann Beebe 62 | 439,Shane,Belli,Shane Belli 63 | 443,Mason,Bendixen,Mason Bendixen 64 | 445,John,Bennetts,John Bennetts 65 | 449,Edna,Benson,Edna Benson 66 | 453,Max,Benson,Max Benson 67 | 451,Payton,Benson,Payton Benson 68 | 455,Scot,Bent,Scot Bent 69 | 463,Alexander,Berger,Alexander Berger 70 | 465,John,Berger,John Berger 71 | 471,Robert,Bernacchi,Robert Bernacchi 72 | 473,Matthias,Berndt,Matthias Berndt 73 | 475,John,Berry,John Berry 74 | 479,Chris,Bidelman,Chris Bidelman 75 | 481,Mary,Billstrom,Mary Billstrom 76 | 483,Jimmy,Bischoff,Jimmy Bischoff 77 | 487,Mae,Black,Mae Black 78 | 489,Jackie,Blackwell,Jackie Blackwell 79 | 385,Daniel,Blanco,Daniel Blanco 80 | 491,Donald,Blanton,Donald Blanton 81 | 495,Michael,Blythe,Michael Blythe 82 | 497,Gabriel,Bockenkamp,Gabriel Bockenkamp 83 | 501,Corinna,Bolender,Corinna Bolender 84 | 503,Luis,Bonifaz,Luis Bonifaz 85 | 387,Cory,Booth,Cory Booth 86 | 505,Randall,Boseman,Randall Boseman 87 | 507,Stephanie,Bourne,Stephanie Bourne 88 | 509,Eli,Bowen,Eli Bowen 89 | 511,Lester,Bowman,Lester Bowman 90 | 513,David,Bradley,David Bradley 91 | 515,Cornelius,Brandon,Cornelius Brandon 92 | 517,Richard,Bready,Richard Bready 93 | 519,Sara,Breer,Sara Breer 94 | 521,Ted,Bremer,Ted Bremer 95 | 523,Alan,Brewer,Alan Brewer 96 | 525,Walter,Brian,Walter Brian 97 | 527,Christopher,Bright,Christopher Bright 98 | 531,David,Brink,David Brink 99 | 533,John,Brooks,John Brooks 100 | 535,Willie,Brooks,Willie Brooks 101 | 537,Carolee,Brown,Carolee Brown 102 | 539,Jo,Brown,Jo Brown 103 | 541,Robert,Brown,Robert Brown 104 | 477,Steven,Brown,Steven Brown 105 | 543,Kevin,Browne,Kevin Browne 106 | 547,Dave,Browning,Dave Browning 107 | 545,Mary,Browning,Mary Browning 108 | 549,Bridget,Browqett,Bridget Browqett 109 | 551,Eric,Brumfield,Eric Brumfield 110 | 553,Dick,Brummer,Dick Brummer 111 | 555,Michael,Brundage,Michael Brundage 112 | 557,Shirley,Bruner,Shirley Bruner 113 | 559,June,Brunner,June Brunner 114 | 561,Dirk,Bruno,Dirk Bruno 115 | 563,Nancy,Buchanan,Nancy Buchanan 116 | 565,Janaina Barreiro Gambaro,Bueno,Janaina Barreiro Gambaro Bueno 117 | 567,Edward,Buensalido,Edward Buensalido 118 | 569,Megan,Burke,Megan Burke 119 | 573,Karren,Burkhardt,Karren Burkhardt 120 | 577,Dana,Burnell,Dana Burnell 121 | 493,Linda,Burnett,Linda Burnett 122 | 579,Timothy,Burnett,Timothy Burnett 123 | 581,Stephen,Burton,Stephen Burton 124 | 583,Deanna,Buskirk,Deanna Buskirk 125 | 585,Jared,Bustamante,Jared Bustamante 126 | 587,Richard,Byham,Richard Byham 127 | 589,David,Byrnes,David Byrnes 128 | 591,Ryan,Calafato,Ryan Calafato 129 | 595,Mari,Caldwell,Mari Caldwell 130 | 597,Barbara,Calone,Barbara Calone 131 | 599,Lindsey,Camacho,Lindsey Camacho 132 | 601,Gustavo,Camargo,Gustavo Camargo 133 | 603,DeeDee,Cameron,DeeDee Cameron 134 | 609,David,Campbell,David Campbell 135 | 1295,Frank,Campbell,Frank Campbell 136 | 607,Joan,Campbell,Joan Campbell 137 | 611,Henry,Campen,Henry Campen 138 | 613,Chris,Cannon,Chris Cannon 139 | 615,Joseph,Cantoni,Joseph Cantoni 140 | 617,Suzana De Abreu,Canuto,Suzana De Abreu Canuto 141 | 619,Jun,Cao,Jun Cao 142 | 621,Johnny,Caprio,Johnny Caprio 143 | 623,Richard,Carey,Richard Carey 144 | 625,Carlton,Carlisle,Carlton Carlisle 145 | 649,Pamela,Carlson,Pamela Carlson 146 | 627,Ty Loren,Carlson,Ty Loren Carlson 147 | 629,Jane,Carmichael,Jane Carmichael 148 | 631,Jovita,Carmody,Jovita Carmody 149 | 633,Steve,Carnes,Steve Carnes 150 | 635,Fernando,Caro,Fernando Caro 151 | 637,Rob,Caron,Rob Caron 152 | 639,Andy,Carothers,Andy Carothers 153 | 641,Donna,Carreras,Donna Carreras 154 | 643,Rosmarie,Carroll,Rosmarie Carroll 155 | 647,Joseph,Castellucio,Joseph Castellucio 156 | 651,Raul,Casts,Raul Casts 157 | 653,Elizabeth,Catalano,Elizabeth Catalano 158 | 655,Matthew,Cavallari,Matthew Cavallari 159 | 657,Brigid,Cavendish,Brigid Cavendish 160 | 659,Andrew,Cencini,Andrew Cencini 161 | 661,Stacey,Cereghino,Stacey Cereghino 162 | 663,Baris,Cetinok,Baris Cetinok 163 | 665,Sean,Chai,Sean Chai 164 | 667,Pat,Chambers,Pat Chambers 165 | 669,Forrest,Chandler,Forrest Chandler 166 | 671,Lee,Chapla,Lee Chapla 167 | 675,Neil,Charney,Neil Charney 168 | 683,Yao-Qiang,Cheng,Yao-Qiang Cheng 169 | 685,Nicky,Chesnut,Nicky Chesnut 170 | 687,Susan,Chestnut,Susan Chestnut 171 | 689,Martin,Chisholm,Martin Chisholm 172 | 691,Mike,Choi,Mike Choi 173 | 693,Ruth,Choin,Ruth Choin 174 | 695,Anthony,Chor,Anthony Chor 175 | 681,Pei,Chow,Pei Chow 176 | 697,Charles,Christensen,Charles Christensen 177 | 699,Jill,Christie,Jill Christie 178 | 701,Alice,Clark,Alice Clark 179 | 703,Gina,Clark,Gina Clark 180 | 705,James,Clark,James Clark 181 | 707,Jane,Clayton,Jane Clayton 182 | 709,Kristine,Cleary,Kristine Cleary 183 | 713,Connie,Coffman,Connie Coffman 184 | 715,Jeanette,Cole,Jeanette Cole 185 | 717,Eric,Coleman,Eric Coleman 186 | 719,Pat,Coleman,Pat Coleman 187 | 721,Takiko,Collins,Takiko Collins 188 | 723,John,Colon,John Colon 189 | 725,Scott,Colvin,Scott Colvin 190 | 727,Aaron,Con,Aaron Con 191 | 729,Peter,Connelly,Peter Connelly 192 | 731,William,Conner,William Conner 193 | 733,Stephanie,Conroy,Stephanie Conroy 194 | 735,Amy,Consentino,Amy Consentino 195 | 737,Dorothy,Contreras,Dorothy Contreras 196 | 739,Patrick,Cook,Patrick Cook 197 | 741,Scott,Cooper,Scott Cooper 198 | 743,Eva,Corets,Eva Corets 199 | 745,Marlin,Coriell,Marlin Coriell 200 | 751,Pamela,Cox,Pamela Cox 201 | 753,Jack,Creasey,Jack Creasey 202 | 757,Shelley,Crow,Shelley Crow 203 | 759,Grant,Culbertson,Grant Culbertson 204 | 761,Scott,Culp,Scott Culp 205 | 763,Conor,Cunningham,Conor Cunningham 206 | 765,Jose,Curry,Jose Curry 207 | 769,Ryan,Danner,Ryan Danner 208 | 771,Mike,Danseglio,Mike Danseglio 209 | 773,Megan,Davis,Megan Davis 210 | 775,Alvaro,De Matos Miranda Filho,Alvaro De Matos Miranda Filho 211 | 777,Jose,De Oliveira,Jose De Oliveira 212 | 779,Jacob,Dean,Jacob Dean 213 | 781,Alexander,Deborde,Alexander Deborde 214 | 783,Barbara,Decker,Barbara Decker 215 | 785,Kirk,DeGrasse,Kirk DeGrasse 216 | 787,Aidan,Delaney,Aidan Delaney 217 | 789,Stefan,Delmarco,Stefan Delmarco 218 | 791,Shawn,Demicell,Shawn Demicell 219 | 793,Della,Demott Jr,Della Demott Jr 220 | 795,Bruno,Deniut,Bruno Deniut 221 | 797,Helen,Dennis,Helen Dennis 222 | 799,Prashanth,Desai,Prashanth Desai 223 | 801,Bev,Desalvo,Bev Desalvo 224 | 767,Thierry,D'Hers,Thierry D'Hers 225 | 803,Brenda,Diaz,Brenda Diaz 226 | 805,Gabriele,Dickmann,Gabriele Dickmann 227 | 807,Holly,Dickson,Holly Dickson 228 | 809,Dick,Dievendorff,Dick Dievendorff 229 | 811,Rudolph,Dillon,Rudolph Dillon 230 | 813,Andrew,Dixon,Andrew Dixon 231 | 815,Blaine,Dockter,Blaine Dockter 232 | 817,Cindy,Dodd,Cindy Dodd 233 | 819,John,Donovan,John Donovan 234 | 821,Patricia,Doyle,Patricia Doyle 235 | 825,Gary,Drury,Gary Drury 236 | 823,Gerald,Drury,Gerald Drury 237 | 827,Reuben,D'sa,Reuben D'sa 238 | 829,Ed,Dudenhoefer,Ed Dudenhoefer 239 | 831,Bernard,Duerr,Bernard Duerr 240 | 833,Tish,Duff,Tish Duff 241 | 835,Adrian,Dumitrascu,Adrian Dumitrascu 242 | 837,Bart,Duncan,Bart Duncan 243 | 839,Maciej,Dusza,Maciej Dusza 244 | 841,Shelley,Dyck,Shelley Dyck 245 | 843,Linda,Ecoffey,Linda Ecoffey 246 | 845,Carla,Eldridge,Carla Eldridge 247 | 847,Carol,Elliott,Carol Elliott 248 | 849,Shannon,Elliott,Shannon Elliott 249 | 851,Jauna,Elson,Jauna Elson 250 | 853,Michael,Emanuel,Michael Emanuel 251 | 855,Terry,Eminhizer,Terry Eminhizer 252 | 857,John,Emory,John Emory 253 | 859,Gail,Erickson,Gail Erickson 254 | 861,Mark,Erickson,Mark Erickson 255 | 863,Martha,Espinoza,Martha Espinoza 256 | 867,Janeth,Esteves,Janeth Esteves 257 | 871,Ann,Evans,Ann Evans 258 | 873,John,Evans,John Evans 259 | 869,Twanna,Evans,Twanna Evans 260 | 875,Marc,Faeber,Marc Faeber 261 | 877,Fadi,Fakhouri,Fadi Fakhouri 262 | 879,Carolyn,Farino,Carolyn Farino 263 | 881,Geri,Farrell,Geri Farrell 264 | 883,Hanying,Feng,Hanying Feng 265 | 317,Fran�ois,Ferrier,Fran�ois Ferrier 266 | 889,James,Fine,James Fine 267 | 885,Rhoda,Finley,Rhoda Finley 268 | 887,Duane,Fitzgerald,Duane Fitzgerald 269 | 891,Kathie,Flood,Kathie Flood 270 | 893,Jay,Fluegel,Jay Fluegel 271 | 895,Kelly,Focht,Kelly Focht 272 | 897,Jeffrey,Ford,Jeffrey Ford 273 | 913,John,Ford,John Ford 274 | 899,Garth,Fort,Garth Fort 275 | 901,Dorothy,Fox,Dorothy Fox 276 | 903,Judith,Frazier,Judith Frazier 277 | 905,John,Fredericksen,John Fredericksen 278 | 907,Susan,French,Susan French 279 | 909,Liam,Friedland,Liam Friedland 280 | 911,Mihail,Frintu,Mihail Frintu 281 | 915,Paul,Fulton,Paul Fulton 282 | 919,Bob,Gage,Bob Gage 283 | 921,Aldeen,Gallagher,Aldeen Gallagher 284 | 923,Michael,Galos,Michael Galos 285 | 925,Jon,Ganio,Jon Ganio 286 | 927,Kathleen,Garza,Kathleen Garza 287 | 929,Dominic,Gash,Dominic Gash 288 | 931,Janet,Gates,Janet Gates 289 | 933,Orlando,Gee,Orlando Gee 290 | 935,Darren,Gehring,Darren Gehring 291 | 937,Jim,Geist,Jim Geist 292 | 939,Barbara,German,Barbara German 293 | 941,Tom,Getzinger,Tom Getzinger 294 | 943,Leo,Giakoumakis,Leo Giakoumakis 295 | 945,Cornett,Gibbens,Cornett Gibbens 296 | 947,Frances,Giglio,Frances Giglio 297 | 949,Guy,Gilbert,Guy Gilbert 298 | 951,Janet,Gilliat,Janet Gilliat 299 | 953,Mary,Gimmi,Mary Gimmi 300 | 957,Jeanie,Glenn,Jeanie Glenn 301 | 959,Diane,Glimp,Diane Glimp 302 | 961,James,Glynn,James Glynn 303 | 963,Scott,Gode,Scott Gode 304 | 965,Mete,Goktepe,Mete Goktepe 305 | 969,Brian,Goldstein,Brian Goldstein 306 | 973,Linda,Gonzales,Linda Gonzales 307 | 971,Lynn,Gonzales,Lynn Gonzales 308 | 975,Abigail,Gonzalez,Abigail Gonzalez 309 | 977,Michael,Graff,Michael Graff 310 | 979,Derek,Graham,Derek Graham 311 | 981,Lowell,Graham,Lowell Graham 312 | 983,Jon,Grande,Jon Grande 313 | 985,Jane,Greer,Jane Greer 314 | 987,Geoff,Grisso,Geoff Grisso 315 | 989,Douglas,Groncki,Douglas Groncki 316 | 991,Brian,Groth,Brian Groth 317 | 993,Faith,Gustafson,Faith Gustafson 318 | 997,Hattie,Haemon,Hattie Haemon 319 | 999,Matthew,Hagemann,Matthew Hagemann 320 | 1001,Erin,Hagens,Erin Hagens 321 | 1003,Betty,Haines,Betty Haines 322 | 1009,Bryan,Hamilton,Bryan Hamilton 323 | 1011,James,Hamilton,James Hamilton 324 | 1015,Jean,Handley,Jean Handley 325 | 1013,Kerim,Hanif,Kerim Hanif 326 | 1047,John,Hanson,John Hanson 327 | 1017,Mark,Hanson,Mark Hanson 328 | 1019,William,Hapke,William Hapke 329 | 1021,Katherine,Harding,Katherine Harding 330 | 1023,Kimberly,Harrington,Kimberly Harrington 331 | 1025,Lucy,Harrington,Lucy Harrington 332 | 1027,Keith,Harris,Keith Harris 333 | 995,Greg,Harrison,Greg Harrison 334 | 1029,Doris,Hartwig,Doris Hartwig 335 | 1031,Roger,Harui,Roger Harui 336 | 1033,Ann,Hass,Ann Hass 337 | 1035,Mark,Hassall,Mark Hassall 338 | 1037,Neal,Hasty,Neal Hasty 339 | 1039,James,Haugh,James Haugh 340 | 1041,Jeff,Hay,Jeff Hay 341 | 1043,Brenda,Heaney,Brenda Heaney 342 | 1045,James,Hendergart,James Hendergart 343 | 1049,Valerie,Hendricks,Valerie Hendricks 344 | 1051,Jay,Henningsen,Jay Henningsen 345 | 1053,Jeff,Henshaw,Jeff Henshaw 346 | 1055,Kari,Hensien,Kari Hensien 347 | 1059,Irene,Hernandez,Irene Hernandez 348 | 1061,J�sus,Hernandez,J�sus Hernandez 349 | 1063,Pam,Herrick,Pam Herrick 350 | 1065,Cheryl,Herring,Cheryl Herring 351 | 1067,Ronald,Heymsfield,Ronald Heymsfield 352 | 1069,Sidney,Higa,Sidney Higa 353 | 1071,Onetha,Higgs,Onetha Higgs 354 | 1073,Fran,Highfill,Fran Highfill 355 | 1077,Andrew,Hill,Andrew Hill 356 | 1075,Geneva,Hill,Geneva Hill 357 | 1079,Reinout,Hillmann,Reinout Hillmann 358 | 1081,Mike,Hines,Mike Hines 359 | 1083,Matthew,Hink,Matthew Hink 360 | 1085,Nancy,Hirota,Nancy Hirota 361 | 1087,Rose,Hirsch,Rose Hirsch 362 | 1089,Douglas,Hite,Douglas Hite 363 | 1099,Bob,Hodges,Bob Hodges 364 | 1091,David,Hodgson,David Hodgson 365 | 1093,Helge,Hoeing,Helge Hoeing 366 | 1095,Barbara,Hoffman,Barbara Hoffman 367 | 1101,Jean,Holloway,Jean Holloway 368 | 1107,Juanita,Holman,Juanita Holman 369 | 1105,Eddie,Holmes,Eddie Holmes 370 | 1109,Peter,Houston,Peter Houston 371 | 1111,Curtis,Howard,Curtis Howard 372 | 1113,Joe,Howard,Joe Howard 373 | 1115,Janice,Hows,Janice Hows 374 | 1117,George,Huckaby,George Huckaby 375 | 1121,Arlene,Huff,Arlene Huff 376 | 1119,Joshua,Huff,Joshua Huff 377 | 1125,Phyllis,Huntsman,Phyllis Huntsman 378 | 1127,Lawrence,Hurkett,Lawrence Hurkett 379 | 1133,Lucio,Iallo,Lucio Iallo 380 | 1129,Ryan,Ihrig,Ryan Ihrig 381 | 1131,Beth,Inghram,Beth Inghram 382 | 1135,Richard,Irwin,Richard Irwin 383 | 1137,Erik,Ismert,Erik Ismert 384 | 1139,Denean,Ison,Denean Ison 385 | 1141,Raman,Iyer,Raman Iyer 386 | 1143,Bronson,Jacobs,Bronson Jacobs 387 | 1145,Eric,Jacobsen,Eric Jacobsen 388 | 1147,Jodan,Jacobson,Jodan Jacobson 389 | 337,Sean,Jacobson,Sean Jacobson 390 | 1151,David,Jaffe,David Jaffe 391 | 1153,Jay,Jamison,Jay Jamison 392 | 1157,Joyce,Jarvis,Joyce Jarvis 393 | 1159,George,Jiang,George Jiang 394 | 1161,Stephen,Jiang,Stephen Jiang 395 | 1155,Vance,Johns,Vance Johns 396 | 1169,Barry,Johnson,Barry Johnson 397 | 1171,Brian,Johnson,Brian Johnson 398 | 1165,Danielle,Johnson,Danielle Johnson 399 | 1173,David,Johnson,David Johnson 400 | 1167,Greg,Johnson,Greg Johnson 401 | 1163,Samuel,Johnson,Samuel Johnson 402 | 1175,Willis,Johnson,Willis Johnson 403 | 1177,Tamara,Johnston,Tamara Johnston 404 | 367,Tom,Johnston,Tom Johnston 405 | 1181,Brannon,Jones,Brannon Jones 406 | 1183,Jean,Jordan,Jean Jordan 407 | 1185,Peggy,Justice,Peggy Justice 408 | 1195,Sandeep,Kaliyath,Sandeep Kaliyath 409 | 1197,John,Kane,John Kane 410 | 1199,Lori,Kane,Lori Kane 411 | 1205,Sandeep,Katyal,Sandeep Katyal 412 | 1209,Kendall,Keil,Kendall Keil 413 | 1211,Victor,Kelley,Victor Kelley 414 | 1213,John,Kelly,John Kelly 415 | 1215,Robert,Kelly,Robert Kelly 416 | 1249,Jim,Kennedy,Jim Kennedy 417 | 1217,Kevin,Kennedy,Kevin Kennedy 418 | 1265,Mitch,Kennedy,Mitch Kennedy 419 | 1219,Mary,Kesslep,Mary Kesslep 420 | 1223,Elizabeth,Keyser,Elizabeth Keyser 421 | 1227,Imtiaz,Khan,Imtiaz Khan 422 | 1229,Karan,Khanna,Karan Khanna 423 | 1233,Jim,Kim,Jim Kim 424 | 1231,Joe,Kim,Joe Kim 425 | 1235,Shane,Kim,Shane Kim 426 | 1237,Tim,Kim,Tim Kim 427 | 1251,Kirk,King,Kirk King 428 | 1239,Russell,King,Russell King 429 | 1241,Anton,Kirilov,Anton Kirilov 430 | 1191,Sandra,Kitt,Sandra Kitt 431 | 1243,Christian,Kleinerman,Christian Kleinerman 432 | 1245,Andrew,Kobylinski,Andrew Kobylinski 433 | 1247,Reed,Koch,Reed Koch 434 | 1253,Eugene,Kogan,Eugene Kogan 435 | 1255,Scott,Konersmann,Scott Konersmann 436 | 1257,Joy,Koski,Joy Koski 437 | 1259,Pamala,Kotc,Pamala Kotc 438 | 1261,Edward,Kozlowski,Edward Kozlowski 439 | 1187,Diane,Krane,Diane Krane 440 | 1201,Judith,Krane,Judith Krane 441 | 1203,Kay,Krane,Kay Krane 442 | 1269,Margaret,Krupka,Margaret Krupka 443 | 1271,Deepak,Kumar,Deepak Kumar 444 | 1273,Jeffrey,Kung,Jeffrey Kung 445 | 1275,Vamsi,Kuppa,Vamsi Kuppa 446 | 1279,Peter,Kurniawan,Peter Kurniawan 447 | 1277,Jeffrey,Kurtz,Jeffrey Kurtz 448 | 1281,Eric,Lang,Eric Lang 449 | 1283,Rebecca,Laszlo,Rebecca Laszlo 450 | 1285,Cecilia,Laursen,Cecilia Laursen 451 | 1287,David,Lawrence,David Lawrence 452 | 1289,Elsa,Leavitt,Elsa Leavitt 453 | 1293,Marjorie,Lee,Marjorie Lee 454 | 1297,Mark,Lee,Mark Lee 455 | 1291,Michael,Lee,Michael Lee 456 | 1299,Robertson,Lee,Robertson Lee 457 | 1301,Jolie,Lenehan,Jolie Lenehan 458 | 1303,Roger,Lengel,Roger Lengel 459 | 1305,A.,Leonetti,A. Leonetti 460 | 1307,Bonnie,Lepro,Bonnie Lepro 461 | 1309,Gloria,Lesko,Gloria Lesko 462 | 1311,Linda,Leste,Linda Leste 463 | 1315,Judy,Lew,Judy Lew 464 | 1317,Elsie,Lewin,Elsie Lewin 465 | 1319,George,Li,George Li 466 | 1321,Yale,Li,Yale Li 467 | 1323,Yan,Li,Yan Li 468 | 1325,Yuhong,Li,Yuhong Li 469 | 1327,Joseph,Lique,Joseph Lique 470 | 1329,Paulo,Lisboa,Paulo Lisboa 471 | 1331,David,Liu,David Liu 472 | 1333,Jinghao,Liu,Jinghao Liu 473 | 1335,Kevin,Liu,Kevin Liu 474 | 1337,Run,Liu,Run Liu 475 | 1339,Todd,Logan,Todd Logan 476 | 1341,Kok-Ho,Loh,Kok-Ho Loh 477 | 1343,John,Long,John Long 478 | 1345,Sharon,Looney,Sharon Looney 479 | 1349,Spencer,Low,Spencer Low 480 | 1351,Anita,Lucerne,Anita Lucerne 481 | 1353,Jose,Lugo,Jose Lugo 482 | 1355,Richard,Lum,Richard Lum 483 | 1357,Judy,Lundahl,Judy Lundahl 484 | 1361,Helen,Lutes,Helen Lutes 485 | 1363,Robert,Lyeba,Robert Lyeba 486 | 1365,Sharon,Lynn,Sharon Lynn 487 | 1367,Robert,Lyon,Robert Lyon 488 | 1369,Jenny,Lysaker,Jenny Lysaker 489 | 1371,Denise,Maccietto,Denise Maccietto 490 | 1373,Scott,MacDonald,Scott MacDonald 491 | 1377,Patrick,Magenheimer,Patrick Magenheimer 492 | 1379,Kimberly,Malmendier,Kimberly Malmendier 493 | 1381,Ajay,Manchepalli,Ajay Manchepalli 494 | 1383,Parul,Manek,Parul Manek 495 | 1385,Tomas,Manzanares,Tomas Manzanares 496 | 1387,Kathy,Marcovecchio,Kathy Marcovecchio 497 | 1391,Melissa,Marple,Melissa Marple 498 | 1393,Cecelia,Marshall,Cecelia Marshall 499 | 1403,Frank,Mart�nez,Frank Mart�nez 500 | 1395,Benjamin,Martin,Benjamin Martin 501 | 1397,Linda,Martin,Linda Martin 502 | 1399,Mindy,Martin,Mindy Martin 503 | 1405,Steve,Masters,Steve Masters 504 | 1407,Joseph,Matthews,Joseph Matthews 505 | 1409,Jennifer,Maxham,Jennifer Maxham 506 | 1411,Chris,Maxwell,Chris Maxwell 507 | 1413,Sandra,Maynard,Sandra Maynard 508 | 1375,Walter,Mays,Walter Mays 509 | 1419,Stacie,Mcanich,Stacie Mcanich 510 | 1421,Katie,McAskill-White,Katie McAskill-White 511 | 1423,Lola,McCarthy,Lola McCarthy 512 | 1425,Jane,McCarty,Jane McCarty 513 | 1415,John,McClane,John McClane 514 | 1427,Nikki,McCormick,Nikki McCormick 515 | 1429,James,McCoy,James McCoy 516 | 1431,Christinia,McDonald,Christinia McDonald 517 | 1433,Alejandro,McGuel,Alejandro McGuel 518 | 1417,Robin,McGuigan,Robin McGuigan 519 | 1435,Yvonne,McKay,Yvonne McKay 520 | 1437,Nkenge,McLin,Nkenge McLin 521 | 1439,Nancy,McPhearson,Nancy McPhearson 522 | 1441,Nellie,Medina,Nellie Medina 523 | 1443,Raquel,Mello,Raquel Mello 524 | 1447,R. Morgan,Mendoza,R. Morgan Mendoza 525 | 1449,Tosh,Meston,Tosh Meston 526 | 1453,Stephen,Mew,Stephen Mew 527 | 1459,Deanna,Meyer,Deanna Meyer 528 | 1455,Eric,Meyer,Eric Meyer 529 | 1457,Helen,Meyer,Helen Meyer 530 | 1461,Gary,Meyerhoff,Gary Meyerhoff 531 | 1463,Ramesh,Meyyappan,Ramesh Meyyappan 532 | 1465,Thomas,Michaels,Thomas Michaels 533 | 1467,Jan,Miksovsky,Jan Miksovsky 534 | 1475,Ben,Miller,Ben Miller 535 | 1477,Dylan,Miller,Dylan Miller 536 | 1473,Emilo,Miller,Emilo Miller 537 | 1479,Frank,Miller,Frank Miller 538 | 1471,Matthew,Miller,Matthew Miller 539 | 1469,Virginia,Miller,Virginia Miller 540 | 1483,Linda,Mitchell,Linda Mitchell 541 | 1481,Neva,Mitchell,Neva Mitchell 542 | 1485,Scott,Mitchell,Scott Mitchell 543 | 1489,Joseph,Mitzner,Joseph Mitzner 544 | 303,Margaret,Smith,Margaret Smith 545 | 1795,Laura,Steele,Laura Steele 546 | 1797,Shanay,Steelman,Shanay Steelman 547 | 1801,Stefano,Stefani,Stefano Stefani 548 | 1803,Alan,Steiner,Alan Steiner 549 | 1811,Alice,Steiner,Alice Steiner 550 | 1805,Derik,Stenerson,Derik Stenerson 551 | 1807,Vassar,Stern,Vassar Stern 552 | 1809,Wathalee,Steuber,Wathalee Steuber 553 | 1813,Liza Marie,Stevens,Liza Marie Stevens 554 | 1815,Jim,Stewart,Jim Stewart 555 | 1817,Judy,Storjohann,Judy Storjohann 556 | 1821,Robert,Stotka,Robert Stotka 557 | 1823,Kayla,Stotler,Kayla Stotler 558 | 1825,Charles,Strange,Charles Strange 559 | 1827,Ruby Sue,Styles,Ruby Sue Styles 560 | 1829,Min,Su,Min Su 561 | 1831,Gary,Suess,Gary Suess 562 | 1833,Ruth,Suffin,Ruth Suffin 563 | 1835,Elizabeth,Sullivan,Elizabeth Sullivan 564 | 1837,Michael,Sullivan,Michael Sullivan 565 | 1839,Marcia,Sultan,Marcia Sultan 566 | 1841,Nate,Sun,Nate Sun 567 | 1843,Krishna,Sunkammurali,Krishna Sunkammurali 568 | 1845,Brad,Sutton,Brad Sutton 569 | 1851,Katherine,Swan,Katherine Swan 570 | 1849,Abraham,Swearengin,Abraham Swearengin 571 | 1855,Shelly,Szymanski,Shelly Szymanski 572 | 1857,Julie,Taft-Rider,Julie Taft-Rider 573 | 1859,Clarence,Tatman,Clarence Tatman 574 | 1861,Damon,Taylor,Damon Taylor 575 | 1865,Denis,Taylor,Denis Taylor 576 | 1863,Mike,Taylor,Mike Taylor 577 | 1869,Chad,Tedford,Chad Tedford 578 | 1871,Sameer,Tejani,Sameer Tejani 579 | 1873,Vanessa,Tench,Vanessa Tench 580 | 1867,Jeff,Teper,Jeff Teper 581 | 1875,Judy,Thames,Judy Thames 582 | 1877,Karen,Theisen,Karen Theisen 583 | 1879,Ram,Thirunavukkarasu,Ram Thirunavukkarasu 584 | 1883,James,Thomas,James Thomas 585 | 1881,Phyllis,Thomas,Phyllis Thomas 586 | 1889,Daniel,Thompson,Daniel Thompson 587 | 1885,Donald,Thompson,Donald Thompson 588 | 1887,Kendra,Thompson,Kendra Thompson 589 | 1891,Andrea,Thomsen,Andrea Thomsen 590 | 1893,Rossane,Thoreson,Rossane Thoreson 591 | 1895,Yuping,Tian,Yuping Tian 592 | 1897,Mike,Tiano,Mike Tiano 593 | 1899,Diane,Tibbott,Diane Tibbott 594 | 1901,Danielle,Tiedt,Danielle Tiedt 595 | 1903,Tony,Ting,Tony Ting 596 | 1905,John,Tippett,John Tippett 597 | 1909,Delia,Toone,Delia Toone 598 | 1911,Alvin,Torre,Alvin Torre 599 | 1913,Anna,Townsend,Anna Townsend 600 | 1915,Glenn,Track,Glenn Track 601 | 1917,Abe,Tramel,Abe Tramel 602 | 1923,Doris,Traube,Doris Traube 603 | 1925,Jean,Trenary,Jean Trenary 604 | 1927,Billy,Trent,Billy Trent 605 | 1929,David,Trolen,David Trolen 606 | 1931,Michael John,Troyer,Michael John Troyer 607 | 1933,Christie,Trujillo,Christie Trujillo 608 | 1935,Lynn,Tsoflias,Lynn Tsoflias 609 | 1937,Gracia,Tuell,Gracia Tuell 610 | 1939,Phyllis,Tuffield,Phyllis Tuffield 611 | 1943,Sairaj,Uddin,Sairaj Uddin 612 | 1945,Sunil,Uppal,Sunil Uppal 613 | 1947,Mary,Vaca,Mary Vaca 614 | 1949,Rachel,Valdez,Rachel Valdez 615 | 1953,H.,Valentine,H. Valentine 616 | 1955,Jessie,Valerio,Jessie Valerio 617 | 1951,Esther,Valle,Esther Valle 618 | 1957,Johnathan,Van Eaton,Johnathan Van Eaton 619 | 1959,Roger,Van Houten,Roger Van Houten 620 | 1961,Mandy,Vance,Mandy Vance 621 | 1963,Rose,Vandenouer,Rose Vandenouer 622 | 1965,Gregory,Vanderbout,Gregory Vanderbout 623 | 1967,Michael,Vanderhyde,Michael Vanderhyde 624 | 1969,Margaret,Vanderkamp,Margaret Vanderkamp 625 | 1971,Kara,Vanderlinden,Kara Vanderlinden 626 | 1977,Gary,Vargas,Gary Vargas 627 | 1975,Nieves,Vargas,Nieves Vargas 628 | 1979,Ranjit,Varkey Chudukatil,Ranjit Varkey Chudukatil 629 | 1981,Patricia,Vasquez,Patricia Vasquez 630 | 1983,Raja,Venugopal,Raja Venugopal 631 | 1985,Kevin,Verboort,Kevin Verboort 632 | 1987,Dora,Verdad,Dora Verdad 633 | 1989,Wanda,Vernon,Wanda Vernon 634 | 1991,Robert,Vessa,Robert Vessa 635 | 1993,Caroline,Vicknair,Caroline Vicknair 636 | --------------------------------------------------------------------------------