AWS GLUE 导入 xls/xlsx 文件
AWS GLUE import xls/xlsx file
我正在为我的客户设置 AWS GLUE 作业。他们的文件是 excel,扩展名为 xls/xlsx,并且有多张纸,他们不想在上传前做任何转换工作。如何直接从 xls/xlsx 文件中提取数据,或者 GLUE 能否将 xls/xlsx 文件转换为 csv 文件?
xls/xlsx
文件类型目前不可用。您需要编写转换器脚本将文件从 xls/xlsx
转换为 CSV。
GLUE 目前不支持 xls/xlsx。最简单的方法是在 glue 中编写一个 python shell 作业,将 excel 转换为 csv,然后 运行 对其进行爬虫。下面是 sample 在 python
import xlrd
import csv
def csv_from_excel():
wb = xlrd.open_workbook('your_workbook.xls')
sh = wb.sheet_by_name('Sheet1')
your_csv_file = open('your_csv_file.csv', 'wb')
wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
for rownum in xrange(sh.nrows):
wr.writerow(sh.row_values(rownum))
your_csv_file.close()
Excel 可以在 glue 版本 2 中读取,而不是在 glue 版本 3 中读取。
步骤:
- 转到粘合作业并使用以下代码编辑脚本
代码:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
import pandas as pd
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
excel_path= r"s3://input/employee.xlsx"
df_xl_op = pd.read_excel(excel_path,sheet_name = "Sheet1")
df=df_xl_op.applymap(str)
input_df = spark.createDataFrame(df)
input_df.printSchema()
job.commit()
保存脚本
转到操作 - 编辑作业 - Select 粘贴版本 2 并在安全配置下设置密钥值
键:--additional-python-modules
值:pandas==1.2.4,xlrd==1.2.0,numpy==1.20.1,fsspec==0.7.4
保存并运行作业
它将解决您的错误,您将能够阅读 excel 文件
我正在为我的客户设置 AWS GLUE 作业。他们的文件是 excel,扩展名为 xls/xlsx,并且有多张纸,他们不想在上传前做任何转换工作。如何直接从 xls/xlsx 文件中提取数据,或者 GLUE 能否将 xls/xlsx 文件转换为 csv 文件?
xls/xlsx
文件类型目前不可用。您需要编写转换器脚本将文件从 xls/xlsx
转换为 CSV。
xls/xlsx。最简单的方法是在 glue 中编写一个 python shell 作业,将 excel 转换为 csv,然后 运行 对其进行爬虫。下面是 sample 在 python
import xlrd
import csv
def csv_from_excel():
wb = xlrd.open_workbook('your_workbook.xls')
sh = wb.sheet_by_name('Sheet1')
your_csv_file = open('your_csv_file.csv', 'wb')
wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
for rownum in xrange(sh.nrows):
wr.writerow(sh.row_values(rownum))
your_csv_file.close()
Excel 可以在 glue 版本 2 中读取,而不是在 glue 版本 3 中读取。
步骤:
- 转到粘合作业并使用以下代码编辑脚本
代码:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
import pandas as pd
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
excel_path= r"s3://input/employee.xlsx"
df_xl_op = pd.read_excel(excel_path,sheet_name = "Sheet1")
df=df_xl_op.applymap(str)
input_df = spark.createDataFrame(df)
input_df.printSchema()
job.commit()
保存脚本
转到操作 - 编辑作业 - Select 粘贴版本 2 并在安全配置下设置密钥值
键:--additional-python-modules
值:pandas==1.2.4,xlrd==1.2.0,numpy==1.20.1,fsspec==0.7.4保存并运行作业
它将解决您的错误,您将能够阅读 excel 文件