我阅读了很多关于如何过期(删除)亚马逊 S3 对象并尝试设置生命周期规则来做到这一点,但是对象没有被删除,想知道我做错了什么。
我在 S3 上有这样组织的对象:
Amazon S3 > my-test-bucket > my-test-org > a.csv,
b.xml,
c.xsl...
Run Code Online (Sandbox Code Playgroud)
如果它们是 365 天,我需要删除 my-test-bucket 中的所有文件。那里有很多文件已经超过 2 年了,所以按照这个规则,这些文件应该被删除。
在生命周期规则中,我指定添加过滤器来限制范围 my-test-bucket,在“到期”部分,我选择了“当前版本”和“以前版本”,
my-test-bucket 未启用版本控制。
完成所有这些后,我一直在等待和等待,但什么也没发生。那些旧文件还在。我的问题是:
谢谢
我刚刚下载了 eclipse 2019-03 (4.11.0),并且需要安装 google-java-format 插件,根据说明我需要将 google-java-format Eclipse 插件放到 eclipse dropins 文件夹中,我环顾四周有没有这样的文件夹,通过谷歌周围我决定手动创建这个文件夹现在文件夹目录看起来像这样
/Users/ddd/eclipse/java-2019-03
/Eclipse.app
/dropins
google-java-format-eclipse-plugin_1.6.0.jar
Run Code Online (Sandbox Code Playgroud)
然后我重新启动 Eclipse 并尝试配置 java 代码格式化程序以使用 google java 格式:

似乎该插件没有被 Eclipse 拾取,我是否将 dropins 文件夹放在了错误的位置?
我有一个 Map[String, Info] 的地图,它包含可以是大写或小写的键,如下所示:
person1: PersonInfo1
person2: PersonInfo2
PERSON1: PersonInfo1
Run Code Online (Sandbox Code Playgroud)
我想获取键“person1”的值,如果没有找到,我将尝试使用“PERSON1”键,我尝试了以下代码:
val info = map.get(key) match {
case Some(personInfo) => personInfo
case None =>
map.get(key.toUpperCase()) match {
case Some(personInfo) => personInfo
case None => None
}
}
Run Code Online (Sandbox Code Playgroud)
但是此返回信息作为具有可序列化的产品类型,我如何将信息作为 PersonInfo 类型返回?Scala 中有没有一种方法可以让我通过键从映射中获取值并忽略键的大小写?
我有一个包含 2 列的数据框:account_id并且email_address,现在我想再添加一列updated_email_address,我在该列上调用一些函数email_address来获取updated_email_address. 这是我的代码:
def update_email(email):
print("== email to be updated: " + email)
today = datetime.date.today()
updated = substring(email, -8, 8) + str(today.strftime('%m')) + str(today.strftime('%d')) + "_updated"
return updated
df.withColumn('updated_email_address', update_email(df.email_address))
Run Code Online (Sandbox Code Playgroud)
但结果显示updated_email_address列为空:
+---------------+--------------+---------------------+
|account_id |email_address |updated_email_address|
+---------------+--------------+---------------------+
|123456gd7tuhha |abc@test.com |null |
|djasevneuagsj1 |cde@test.com |null |
+---------------+--------------+---------------+
Run Code Online (Sandbox Code Playgroud)
updated_email在它打印出来的函数内部:
Column<b'(email_address + == email to be udpated: )'>
Run Code Online (Sandbox Code Playgroud)
它还将 df 的列数据类型显示为:
dfData:pyspark.sql.dataframe.DataFrame
account_id:string
email_address:string
updated_email_address:double
Run Code Online (Sandbox Code Playgroud)
为什么updated_email_address列类型是double?
user-defined-functions apache-spark apache-spark-sql pyspark
我有一个整数列表,需要遍历该列表并调用所有具有相同输入参数的不同函数,这是我的代码:
def callRandomFunctions(config: config, prefix: String): ChainBuilder = {
val randomList = Random.shuffle(List(1, 2, 3, 4))
randomList.foreach { _ =>
_ match {
case 1 => func1(config, prefix)
case 2 => func2(config, prefix)
case 3 => func3(config, prefix)
case 4 => func4(config, prefix)
}
}
}
def func1(config: config, prefix: String): ChainBuilder = {...}
def func2(config: config, prefix: String): ChainBuilder = {...}
def func3(config: config, prefix: String): ChainBuilder = {...}
def func4(config: config, prefix: String): ChainBuilder = {...}
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
missing …Run Code Online (Sandbox Code Playgroud) 我有包含“,”的字符串,需要将其序列化/反序列化为 CSV。我已经能够正确地序列化它,但是当反序列化时,它总是错误的。这是我的 Java 代码
List<String> header = ...
test1,
test2, test3 <-- string contains comma ,
test4
List<String> updatedHeaderList = Lists.transform(headerList, new Function<String, String> () {
public String apply(String input) {
return StringEscapeUtils.escapeCsv(input);
}
});
Joiner joiner = Joiner.on(separator);
stringBuilder = joiner.appendTo(stringBuilder, updatedHeaderList);
stringBuilder.append("\n");
return stringBuilder.toString();
Run Code Online (Sandbox Code Playgroud)
当我检查序列化字符串时,它是: test1, "test2\, test3", test4 对我来说看起来很合适
然后我尝试反序列化它:
Splitter.on(",").splitToList(resultString)
it returned list as
test1,
test2,
test3,
test4
Run Code Online (Sandbox Code Playgroud)
我怎样才能将它反序列化回
test1
test2, test3
test4
Run Code Online (Sandbox Code Playgroud)
谢谢
我使用apache poi将CSV文件重写为Excel,对于任何字符串,如HH:mm:ss,我需要将其转换为适当的Excel数据类型,以便用户可以对该列应用sum()函数.我尝试了不同的数据类型,但是当我打开excel文件时,我无法对该列求和,总和显示为"0:00:00",即使在Excel中单击该列显示为"时间"数据类型,
这是我的代码:
CreationHelper creationHelper = workbook.getCreationHelper();
HSSFCellStyle timeStyle = workbook.createCellStyle();
timeStyle.setDataFormat(creationHelper.createDataFormat().getFormat("h:mm:ss"));
cell.setCellValue(column);
if (isTime(column)) {
cell.setCellStyle(timeStyle);
}
private boolean isTime(String value) {
try {
dtf.parseDateTime(value);
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个名为ReportWriter的接口,它将报告写入OutputStream,Report类包含reportRow列表,也是一个抽象类:
public interface ReportWriter<T extends ReportRow> {
OutputStream writeReport(Report<T> report) throws ReportWriterException;
}
public abstract class Report<T extends ReportRow> {
private List<T> rows = Lists.newArrayList();
...
}
public abstract class ReportRow {...}
Run Code Online (Sandbox Code Playgroud)
现在我有CsvWriter实现ReportWriter,
public class CsvWriter<T extends ReportRow> implements ReportWriter {
@Override
public ByteArrayOutputStream writeReport(Report report) throws ReportWriterException {
...
for (T row : report.getRows()) { <-- incompatible type
..write here..
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,它抱怨不兼容的类型:
require Object found T.
Run Code Online (Sandbox Code Playgroud)
我不理解在Report类中我已经指定T是ReportRow的子类,为什么我抱怨这个?
然后我尝试更新CsvWriter的writeReport,如下所示:
public class CsvWriter<T extends ReportRow> implements ReportWriter {
@Override
public …Run Code Online (Sandbox Code Playgroud)