prepare_operation.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #pragma once
  2. #include "structured_table_formats.h"
  3. #include <yt/cpp/mapreduce/interface/operation.h>
  4. namespace NYT::NDetail {
  5. ////////////////////////////////////////////////////////////////////////////////
  6. class TOperationPreparationContext
  7. : public IOperationPreparationContext
  8. {
  9. public:
  10. TOperationPreparationContext(
  11. const TStructuredJobTableList& structuredInputs,
  12. const TStructuredJobTableList& structuredOutputs,
  13. const TClientContext& context,
  14. const IClientRetryPolicyPtr& retryPolicy,
  15. TTransactionId transactionId);
  16. TOperationPreparationContext(
  17. TVector<TRichYPath> inputs,
  18. TVector<TRichYPath> outputs,
  19. const TClientContext& context,
  20. const IClientRetryPolicyPtr& retryPolicy,
  21. TTransactionId transactionId);
  22. int GetInputCount() const override;
  23. int GetOutputCount() const override;
  24. const TVector<TTableSchema>& GetInputSchemas() const override;
  25. const TTableSchema& GetInputSchema(int index) const override;
  26. TMaybe<TYPath> GetInputPath(int index) const override;
  27. TMaybe<TYPath> GetOutputPath(int index) const override;
  28. private:
  29. TVector<TMaybe<TRichYPath>> Inputs_;
  30. TVector<TMaybe<TRichYPath>> Outputs_;
  31. const TClientContext& Context_;
  32. const IClientRetryPolicyPtr RetryPolicy_;
  33. TTransactionId TransactionId_;
  34. mutable TVector<TTableSchema> InputSchemas_;
  35. mutable TVector<bool> InputSchemasLoaded_;
  36. };
  37. ////////////////////////////////////////////////////////////////////////////////
  38. class TSpeculativeOperationPreparationContext
  39. : public IOperationPreparationContext
  40. {
  41. public:
  42. TSpeculativeOperationPreparationContext(
  43. const TVector<TTableSchema>& previousResult,
  44. TStructuredJobTableList inputs,
  45. TStructuredJobTableList outputs);
  46. int GetInputCount() const override;
  47. int GetOutputCount() const override;
  48. const TVector<TTableSchema>& GetInputSchemas() const override;
  49. const TTableSchema& GetInputSchema(int index) const override;
  50. TMaybe<TYPath> GetInputPath(int index) const override;
  51. TMaybe<TYPath> GetOutputPath(int index) const override;
  52. private:
  53. TVector<TTableSchema> InputSchemas_;
  54. TStructuredJobTableList Inputs_;
  55. TStructuredJobTableList Outputs_;
  56. };
  57. ////////////////////////////////////////////////////////////////////////////////
  58. template <typename TTables>
  59. TVector<TTableSchema> PrepareOperation(
  60. const IJob& job,
  61. const IOperationPreparationContext& context,
  62. TTables* inputsPtr,
  63. TTables* outputsPtr,
  64. TUserJobFormatHints& hints);
  65. ////////////////////////////////////////////////////////////////////////////////
  66. TJobOperationPreparer GetOperationPreparer(
  67. const IJob& job,
  68. const IOperationPreparationContext& context);
  69. ////////////////////////////////////////////////////////////////////////////////
  70. } // namespace NYT::NDetail